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