我需要将 char 转换为键码以发送带有XSendEvent
.
我正在使用XStringToKeysym("a")
,但是当我使用像这样的字符时,:
我得到了无效的结果。
是否可以绕过使用keysym并将char直接转换为XKeyEvent
keycode?
任何帮助表示赞赏!
您可以获取字符的 Unicode 表示形式并将其添加到前面U
。例如,在:
这些情况下会做同样的事情:
XStringToKeysym("colon")
XStringToKeysym("U003A")
实际上,您可以比@Artyom 的回答做得更好。如果您查看<X11/keysymdef.h>
您会发现对于ASCII
0x20-0xFF,字符直接映射到XKeySyms
. 所以,我想说直接使用该范围的字符作为更简单KeyCodes
,然后映射剩余的 32 个字符。
有关包括示例代码在内的更详细的答案,请参阅: https ://stackoverflow.com/a/25771958/3149905
XStringToKeysym
将名称转换为键符,因此":"
不起作用,您必须"colon"
改用。
键码不是标准的(键盘布局不同),因此使用键符并在<X11/keysymdef.h>
.
您能做的最好的事情就是XKeysymToKeycode
与 XK_a 和 XK_colon 一起使用。