イベントデバイスから入力されたキーをキャプチャしてマッピングします。 (タッチパッドトグルキーはマッピングされません。)

イベントデバイスから入力されたキーをキャプチャしてマッピングします。 (タッチパッドトグルキーはマッピングされません。)

Ubuntu 13.10がインストールされたLenovo IdeaPad Yoga 13があります。デバイスF5のキーボードにはタッチパッド切り替えボタン()があります。キーボードのF*ボタンは反対です(したがって、取得するには実際にトグルキーである+を押すF5必要があります)。FnF5F5

私はボタンが実際にあるキーボード(一部のデバイスのようなタッチパッドではなく)で読み込まれることを発見しました/dev/input/event3。したがって、sudo input-events 3ボタンがスキャンコード190を送信していることがわかります。

出力sudo lsinput

/dev/input/event3
   bustype : BUS_I8042
   vendor  : 0x1
   product : 0x1
   version : 43907
   name    : "AT Translated Set 2 keyboard"
   phys    : "isa0060/serio0/input0"
   bits ev : EV_SYN EV_KEY EV_MSC EV_LED EV_REP

出力sudo input-events 3

23:13:03.849392: EV_MSC MSC_SCAN 190
23:13:03.849392: EV_SYN code=0 value=0
23:13:03.855413: EV_MSC MSC_SCAN 190
23:13:03.855413: EV_SYN code=0 value=0

を除く他のプログラム(例えばxev)はそれを読むことができないようですinput-events。私のラップトップのタッチパッドを切り替えるためにこのボタンをマップする方法はありますか?では、どうすればよいですか?

ベストアンサー1

カーネルがそれを受け取ったが認識されていないと文句を言い続けています。

この問題が発生したり、オペレーティングシステムで読み取られていないキーをマッピングしたい人は、読んでください。

端末を開いて実行すると、dmesg | grep -A 1 -i setkeycodes次のような複数の項目が表示されます。

[    9.307463] atkbd serio0: Unknown key pressed (translated set 2, code 0xbe on isa0060/serio0).
[    9.307476] atkbd serio0: Use 'setkeycodes e03e <keycode>' to make it known.

私たちが興味を持っているのは、「setkeycodes」の後の16進値です。この場合ですe03e。複数の場合は実行できますtail -f /var/log/kern.log。これを行った後、探しているボタンをクリックすると上記と同じ行が表示され、16進値だけで済みます。これを記録しなさい。

今すぐ実行してxmodmap -pke | less適切なマッピングを見つけます。私の場合は、タッチパッドを切り替えるためにマップする必要があります。つまり、次の行に興味があります。

keycode 199 = XF86TouchpadToggle NoSymbol XF86TouchpadToggle

興味のあるものが見つからない場合は、@Gillesの回答も読んでください。カスタムマッピングを定義してから読み続けることもできます(カーネルが読む場合はxorg.confに追加する必要はありません)。ディ)

これで、次のコマンドを実行しました。sudo setkeycodes [hexadecimal] [keycode]私の場合は、次のようになりますsetkeycodes e03e 199

これで、次の行を使用して機能していること、および/または正しいマッピングがあるかどうかをテストできます。

xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'

このコマンドを実行するときは、新しく開いたウィンドウ()を確認してxevコンソール出力を確認する必要があります。私の場合は、次のように読みました。

207 NoSymbol

199にマップするようにキーコードを要求したので、これは明らかに間違っていますXF86TouchpadToggle。再確認して実際にマッピングされているxmodmap -pkeことを見つけ、オフセット差が8であることを確認してコマンドを再試行しましたが、キーが到着するようにマッピングされました。keycode 207NoSymbolsetkeycodeskeycode 191

sudo setkeycodes e03e 191

これは非常にうまく機能します。

編集 - 私が提供したソリューションは起動時に機能しなければなりませんでしたが、機能しませんでした。明日調べて、この回答を更新します。これで起動時に手動で実行できるようです。

おすすめ記事