0

我需要将 char 转换为键码以发送带有XSendEvent.

我正在使用XStringToKeysym("a"),但是当我使用像这样的字符时,:我得到了无效的结果。

是否可以绕过使用keysym并将char直接转换为XKeyEventkeycode?

任何帮助表示赞赏!

4

3 回答 3

3

您可以获取字符的 Unicode 表示形式并将其添加到前面U。例如,在:这些情况下会做同样的事情:

XStringToKeysym("colon")
XStringToKeysym("U003A")
于 2015-12-14T15:37:18.640 回答
1

实际上,您可以比@Artyom 的回答做得更好。如果您查看<X11/keysymdef.h>您会发现对于ASCII0x20-0xFF,字符直接映射到XKeySyms. 所以,我想说直接使用该范围的字符作为更简单KeyCodes,然后映射剩余的 32 个字符。

有关包括示例代码在内的更详细的答案,请参阅: https ://stackoverflow.com/a/25771958/3149905

于 2014-09-10T17:26:11.093 回答
0

XStringToKeysym将名称转换为键符,因此":"不起作用,您必须"colon"改用。

键码不是标准的(键盘布局不同),因此使用键符并在<X11/keysymdef.h>.

您能做的最好的事情就是XKeysymToKeycode与 XK_a 和 XK_colon 一起使用。

于 2013-06-12T17:40:00.003 回答