我想發送一個合成按鍵事件給X.這一切似乎都適用於使用發送KeyPress
事件的大多數密鑰。不幸的是,我不能讓它爲我的鍵盤上實際沒有的鍵 - 在這種情況下英鎊符號(我有一個美國鍵盤)。如何將按鍵事件發送到X以獲取不在鍵盤上的按鍵?
問題似乎是XKeyEvent
結構需要keycode
而我只有KeySym
這個標誌。 XKeysymToKeycode
返回0,因爲它沒有密鑰。
有誰知道我該如何做到這一點?這可能是我需要一些相當不同的方法 - 任何意見,讚賞!
我想發送一個合成按鍵事件給X.這一切似乎都適用於使用發送KeyPress
事件的大多數密鑰。不幸的是,我不能讓它爲我的鍵盤上實際沒有的鍵 - 在這種情況下英鎊符號(我有一個美國鍵盤)。如何將按鍵事件發送到X以獲取不在鍵盤上的按鍵?
問題似乎是XKeyEvent
結構需要keycode
而我只有KeySym
這個標誌。 XKeysymToKeycode
返回0,因爲它沒有密鑰。
有誰知道我該如何做到這一點?這可能是我需要一些相當不同的方法 - 任何意見,讚賞!
@彼得你正沿着正確的方向看。部分挑戰是KeySyms
的集合遠大於keycode
的大小。您可以通過在合成事件之前修改鍵盤映射來解決此問題。
看看libfakekey
:http://git.yoctoproject.org/cgit/cgit.cgi/libfakekey/tree/src/libfakekey.c
,特別是:fakekey_press_keysym
函數,它接受一個KeySym
發送,而不是隻是一個代號。
感謝堆 - 這似乎實際上工作,鍵盤映射的修改似乎是伎倆。 – Peter 2012-02-23 22:45:14