簡體   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