X11/Xlib c/c++ char to XKeyEvent keycode
X11/Xlib c/c++ char to XKeyEvent keycode
我的需要是将一个字符转换成一个键码,以发送一个事件与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_冒号一起使用。
相关文章:
- "error: no matching function for call to"构造函数错误
- 调用专用模板时出错"no matching function for call to [...]"
- C++ Singleton - Prevent ::instance() to variable
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- Visual Studio Code "undefined reference to `WinMain@16'"
- 使用 GCC 卸载的 OpenMP 卸载失败,并出现"Ptx assembly aborted due to errors"
- 如何解决"invalid conversion from 'char' to 'const char*'"
- 使用 MATLAB 编码器生成C++代码:编译错误"undefined reference to `rgb2gray_tbb_real64'"
- 尝试链接我的着色器时,我收到错误代码"error c5145 must write to gl_position"
- Python str to C++ to Python str
- 为什么创建友元类的实例会导致"undefined reference to"错误?
- System.InvalidCastException - SQL to C++ - safe_cast<float>
- 使用 cmake 的 Linux 终端上的"Conversion to non-scalar type is requested"错误
- "no matching function for call to 'Vector::Vector'"错误
- vector<vector<double>> to mxArray using memcpy
- Tensorflow c++ api undefined reference to 'tflite::D efaultErrorReporter()'
- 当覆盖存在时调用基本虚拟"binded to object"函数
- OpenGL VBO Indexing ( How to compute Index Array)
- 为什么我会" void value not ignored as it ought to be"?
- X11/Xlib c/c++ char to XKeyEvent keycode