どのウィンドウにフォーカスがあるかに関係なく、UbuntuLinuxでグローバルケプレスをキャプチャする方法を検討していました。そして人々は見るべきいくつかのプログラムを提案しました。しかし、それらはすべて、Ubuntuでは壊れているXLibのRECORDのものを使用しています。Ubuntuですべてのキー押下をキャプチャする他の方法はありますか?HALを使ってみませんか?DBus?
1 に答える
キーボードに対応するデバイスを開き、/dev/input/eventNそこからキーボードイベントを読み取ることができます。X以外のコンソールからもキーボードイベントを取得できます。これは「evdev」インターフェースです。
Documentation/input/input.txtカーネルソースから:
デバイスでもブロッキング読み取りと非ブロッキング読み取りを使用でき、読み取りで
select()は/dev/input/eventX常に整数の入力イベントを取得します。それらのレイアウトは次のとおりです。
struct input_event {
struct timeval time;
unsigned short type;
unsigned short code;
unsigned int value;
};
timeはタイムスタンプであり、イベントが発生した時刻を返します。タイプは、たとえばEV_REL、相対的な瞬間、REL_KEYキーを押したり離したりするためのものです。より多くのタイプがで定義されていinclude/linux/input.hます。
codeはイベントコードです。たとえばREL_X、またはKEY_BACKSPACE、完全なリストはにありinclude/linux/input.hます。
valueis the value the event carries. Either a relative change forEV_REL, absolute new value forEV_ABS(joysticks ...), or 0 forEV_KEYfor release, 1 for keypress and 2 for autorepeat.