質問: xmodmapやxツールなしでキーを再マッピングする コーヒー事故により、私のラップトップのキーボードのいくつかは機能しなくなりました。 xmodmapを使用して f1、 f2など、代替として、構成を~/.xmodmapに保存しました。しかし、それはいくつかの問題を引き起こしました。 私はこのコンピュータで常にxを使用するわけではありません。xを起動しないと、xmodmapは適用されません。 xの起動に時間がかかります。 何らかの理由で、xmodmapを介して変更されたキーとは関係のないxfceキーボードショートカットが機能しなくなりました(実際には、ウィンドウマネージャーのショートカットを除くすべてのキーボードショートカットが機能しなくなりました)。 xを起動してから数分経過すると、xfceショートカットが再び正常に機能し始めます。この遅れはそれほど煩わしいものではありませんが、問題でもあります。 xが起動する前にosによって読み取られるある種のマッピングがあると思います。そのマッピングを変更する方法はありませんか? xツールを使用せずにキーボードマッピングを変更する方法はありますか?私はdebianの安定版を使用しています。ps:どうやらstartxでxmodmap .xmodmapを呼び出すファイルは/etc/xdg/xfce4/xinitrcです。その内容は here にあります。
回答: x11かどうかにかかわらず、システム全体に適用するのに十分な低レベルで再マッピングする方法が実際にあり、libinputの再マッピング用のuiの公開を怠るwaylandコンポジターの取り込みが見られるようになったため、これらの方法はこれまで以上に重要になっていますサポート。基本的に、カーネルの入力層がコンソールまたはx11とwaylandが置かれているevdev apiに到達する前に、生のスキャンコードをキーコードに変換する方法を再構成する必要があります。私はそれを行う2つの方法を知っています。 キーボードのハードウェアデータベース(hwdb)エントリを変更します。 udevを使用すると、/etc/udev/hwdb.d/にルールファイルを追加し、systemd-hwdb updateを使用してデータベースの再構築をトリガーし、udevadm triggerを介して再起動せずに適用することができます。 このarchiwikiページ には完全な手順があり、x11とコンソール入力の両方で機能することを明示的に述べています。 evdevremapkeys という名前のデーモンがあります。これは、evlandデバイスのキーイベントを、waylandコンポジターなど、サポートしていないevdevクライアントにサルパッチ再マッピングサポートに再マッピングするために特別に書かれています。 基本的に、g15daemonのような非標準の入力デバイスを補正する必要のあるユーザー空間ドライバーと同じアプローチを使用します。 (evdevデバイスを開いて、再マップする予定のイベントを飲み込みます。そうすれば、デバイスをリッスンしている他の誰もそれらを見ることができません。その後、uinput apiを介して修正されたイベントを発行し、ユーザースペースからカーネルレベルの入力デバイスを作成します。 )