我需要知道如何使用xcb
、xtest
或xlib
将KeySym
注入 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
这与键盘映射无关。