C语言 将密钥符号(不是密钥码)注入 X11 服务器



我需要知道如何使用xcbxtestxlibKeySym注入 X 服务器。我可以注入键码,也可以获取键盘映射,在那里搜索键符号并按相应的键码,但我无法注入键符号(例如 XKB_KEY_Arabic_0 ),当它未映射到当前布局时。

有没有办法做到这一点?

我想到的是找到一个空键码并将其重新映射到所需的键符号。问题:我的代码找不到空键。这是我的代码:

uint32_t find_empty_key_for_remapping()
{
    int keycode_low;
    int keycode_high;
    KeySym * keysyms = 0;
    int empty_key = 0;
    int num_keysym;
    XDisplayKeycodes(display_, &keycode_low, &keycode_high);
    keysyms = XGetKeyboardMapping(display_, keycode_low, keycode_high - keycode_low, &num_keysym);
    for (int i = keycode_low; i <= keycode_high && !empty_key; ++i)
    {
        bool key_is_empty = true;
        for (int j = 0; j < num_keysym; ++j)
        {
            int symindex = ((i - keycode_low) * num_keysym) + j;
            if (keysyms[symindex] != 0)
            {
                key_is_empty = false;
            }
        }
        if (key_is_empty)
        {
            return i;
        }
    }
    return 0;
}

任何帮助将不胜感激!

注入键符号是用xdotool完成的。插入XKB_KEY_Arabic_0使用

xdotool key Arabic_0

这与键盘映射无关。

最新更新