繁体   English   中英

VNC:将Qt KeyEvent转换为可用的X11 / RFB键盘

[英]VNC: Translate Qt KeyEvent to usable X11/RFB keysym

背景:我目前正在创建一个嵌入在QWidget中的简单VNC查看器,以用于Windows。 为此,我编译了仅Qt的VNC版本的KRDC (KDE的远程桌面查看器)及其在Windows上的依赖项libvncclient。 然而,现在出现的问题在于krdc通过vnc发送键事件的方式:它只是发送QKeyEvent :: nativeVirtualKey()的值,在X11上,该值已经很方便地已经是有效的RFB键符。 但是,在Windows上并非如此。

现在,要解决此问题,我认为最好的方法(最终也是可移植的)是将Qt的QKeyEvent :: key()和:: modifier()数据转换回有效的X11 / RFB键符。 尽管考虑到我需要根据修饰符状态(XK_a与XK_A,到目前为止,我仅考虑过移位)来选择不同的键盘符号,但这似乎有些复杂。 研究如何在Qt的源代码中完成X11-> Qt的翻译也无济于事。

可能已经有一个库或代码片段可以实现此目的吗? 还是我应该尝试编写自己的(不完整的)翻译例程? 如果是这样,那么解决此问题的最佳方法是什么,还有我应该注意的与X11相关的其他警告吗?

好吧,似乎我实际上是盲人。 在krdc的代码中,有一个引用位于e-> nativeVirtualKey()语句的正下方,引用了另一个项目的 ,在那里他们遇到了与我完全相同的问题:

// hmm, either Win32-platform or too old Qt so we have to handle and
// translate Qt-key-codes to X-keycodes

我没有测试他们的解决方案,但看起来很可靠。 正如我现在才发现的那样,我自己已经编写了一个小例程,该例程对于大多数拉丁键盘都可以正常工作(但是如果Qt团队更改了任何Qt :: Key值,则可能会中断),如果有人对此感兴趣的话: 链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM