背景:我目前正在创建一个嵌入在QWidget中的简单VNC查看器,以便在Windows上使用。为此,我编译了KRDC的Qt-only VNC版本(KDE的远程桌面查看器)以及Windows上的依赖关系libvncclient。然而,现在出现的问题在于krdc通过vnc发送密钥事件的方式:它只是发送QKeyEvent :: nativeVirtualKey()的值,它在X11上方便地已经是有效的RFB密钥。但是在Windows上,情况并非如此。
现在,为了解决这个问题,我认为最好的(也是最终也是可移植的)方法是将Qt的QKeyEvent :: key()和:: modifier()数据转换回有效的X11 / RFB密钥。这似乎有些复杂,但考虑到我需要根据修改器状态(XK_a vs XK_A,我到目前为止仅考虑移位)选择不同的键符号。研究如何X11 - > Qt的翻译是在Qt的源代码中完成的,并没有真正帮助。
可能已经有一个库或代码片段可以实现这个目的吗?或者我应该尝试编写自己的(不完整的)翻译例程?如果是这样,那么最好的方法是什么呢?还有其他与X11相关的警告我应该注意吗?
答案 0 :(得分:0)
// hmm, either Win32-platform or too old Qt so we have to handle and
// translate Qt-key-codes to X-keycodes
我没有测试他们的解决方案,但看起来很稳固。正如我现在才发现的那样,我自己已经编写了一个小程序,对大多数拉丁语键盘都可以正常工作(但如果Qt团队改变任何Qt :: Key值,可能会破坏),如果有人对它感兴趣: link