私のラップトップのハードウェアスイッチをサポートするカーネルドライバを作成しようとしています。このスイッチはタッチパッドを有効または無効にするかどうかを制御し、ノートブックの360°ヒンジに組み込まれています。ほぼ同じハードウェアに対する他のドライバのヒントに従って、スイッチからハードウェアイベントをキャプチャし、スイッチの位置に応じて対応するキーコードを入力デバイスに送信した。キーコードはユーザー空間で処理されるように残されています。これは、Windows 10ドライバでこのスイッチについて観察したのと同じメカニズムです。
私はキーコード191()を送ることができることを知り、KEY_F21
Gnome 3.18はそれを要求に送りました。スイッチタッチパッドの状態。ノートブックの電源が切れているときやスリープ状態のときにスイッチを反転すると、トグル状態がスイッチの位置と同期せず、スイッチが意図した効果と反対の効果を持つことを除いて、ほぼ完全に機能します。 KEY_F21
キーボードのショートカットなどの状態の非保存スイッチ用に設計されているようですが、私のラップトップのスイッチはオンとオフの位置が異なります。
単一の「タッチパッドを切り替えるためのユーザースペース要求」ではなく、「タッチパッドを無効にするためのユーザースペース要求」と「タッチパッドを有効にするためのユーザースペース要求」として使用できる他のキーコードペアがありますか? 失敗した場合、どのキーコードペアをXやデスクトップ環境で事前定義された動作なしでドライバで使用してDE(Gnome 3.18)で使用できるようにするのは安全ですか?これにカスタムショートカットを設定しますか?
試してみましたがうまくいかないいくつかの点は次のとおりです。
KEY_F22
とを使用してくださいKEY_F23
。一見すると、タッチパッドのオン/オフコードのように見えます。残念ながら、ユーザースペースにタッチパッドの状態を変更するように要求するのではなく、「ドライバーまたはハードウェアがタッチパッドの状態を変更して、警告を表示するためにユーザースペースに新しい状態を通知するだけです」とユーザースペースに通知することがわかりました。- もう見たinput-event-codes.hの最新カーネルバージョン他の明らかに有望なコードの場合。私が見つけた唯一のものは
KEY_TOUCHPAD_TOGGLE
、KEY_TOUCHPAD_ON
およびKEY_TOUCHPAD_OFF
(0x212-0x214)でした。私はこれを試しましたが、Xサーバーが247(0xF7)より高いキーコードを受け入れられないため、何も機能しませんでした。ユーザー空間でタッチパッドの有効化/無効化イベントを処理するにはXまたはDEが必要なため、高いキーコードを使用することはできません。