2012-02-15 61 views
0

我想發送一個合成按鍵事件給X.這一切似乎都適用於使用​​發送KeyPress事件的大多數密鑰。不幸的是,我不能讓它爲我的鍵盤上實際沒有的鍵 - 在這種情況下英鎊符號(我有一個美國鍵盤)。如何將按鍵事件發送到X以獲取不在鍵盤上的按鍵?

問題似乎是XKeyEvent結構需要keycode而我只有KeySym這個標誌。 XKeysymToKeycode返回0,因爲它沒有密鑰。

有誰知道我該如何做到這一點?這可能是我需要一些相當不同的方法 - 任何意見,讚賞!

回答

1

@彼得你正沿着正確的方向看。部分挑戰是KeySyms的集合遠大於keycode的大小。您可以通過在合成事件之前修改鍵盤映射來解決此問題。

看看libfakekeyhttp://git.yoctoproject.org/cgit/cgit.cgi/libfakekey/tree/src/libfakekey.c

,特別是:fakekey_press_keysym函數,它接受一個KeySym發送,而不是隻是一個代號。

+0

感謝堆 - 這似乎實際上工作,鍵盤映射的修改似乎是伎倆。 – Peter 2012-02-23 22:45:14

2

看看xdotool

+0

感謝您的建議 - 我不知道這件事,它聽起來像它應該工作,雖然到目前爲止它也沒有。我想知道是不是有點微妙不正確的關於我的X安裝以某種方式... – Peter 2012-02-16 17:48:14

+0

你可以嘗試用一個空的Xorg.conf開始X(如果你沒有這樣做)。 – 2012-02-16 17:52:54