背景:我目前正在创建一个嵌入在 QWidget 中以在 Windows 上使用的简单 VNC 查看器。为此,我编译了仅 Qt 的 VNC 版本的KRDC(KDE 的远程桌面查看器)以及它在 windows 上的依赖项 libvncclient。然而,现在出现的问题在于 krdc 通过 vnc 发送键事件的方式:它只是发送 QKeyEvent::nativeVirtualKey() 的值,在 X11 上它已经很方便地是一个有效的 RFB 键符。然而,在 Windows 上,情况并非如此。
现在,为了解决这个问题,我认为最好的(最终也是可移植的)方法是将 Qt 的 QKeyEvent::key() 和 ::modifier() 数据转换回有效的 X11/RFB 键符。尽管考虑到我需要根据修饰符状态(XK_a 与 XK_A,到目前为止我只考虑过 shift)来选择不同的键符,这似乎有些复杂。研究如何在 Qt 的源代码中完成 X11 -> Qt 翻译也没有真正的帮助。
可能已经有一个库或代码片段可以完成这个吗?还是我应该尝试编写自己的(不完整的)翻译程序?如果是这样,解决此问题的最佳方法是什么,还有其他与 X11 相关的警告我应该注意吗?