回答:
xcapeと呼ばれる非常に良いソリューションを見つけました。READMEから:
xcapeはデーモンとして実行され、Controlキーをインターセプトします。Controlキーが単独で押されて離されると、Escキーイベントが生成されます。
これは、Caps LockキーをControlに再マップした場合に意味があります。このプログラムの将来のバージョンはあなたのためにそのマッピングを行うかもしれませんが、今のところこれはあなた自身でしなければならないことです。
システム全体でキーを再マッピングするためのLinux専用ソリューションは、単純なudevルールを記述することです。Xに依存せず、任意の端末またはアプリで動作し、2つのファイルをコピーするだけで、最近のLinuxインストール間で移植可能です。
2つのファイルを作成する必要があります。1つはカーネルにキーの再マッピングを指示するudevルールを含み、もう1つは必要な実際のマッピングを含みます。
この方法を使用して、キーボード全体をリマップしました。コードはインスピレーションとして役立つかもしれませんhttp://git.adirat.com/carpalx-keyboard
xcape / xmodmapソリューションの多くの問題を克服するために、この目的のために特別にCでツールを作成しました。
AskUbuntuで別の言葉で書かれた質問に出くわしましたが、良い答えがありましたが、システムで動作するように少し修正する必要がありました。
そこにあるルイとセルギーのコメントごとに、Ubuntu 16.04(Xenial)で動作するこのソリューションを思いつき、使用している他のLinuxシステムに持ち込む予定です。
xcapeをインストールし、次のコード行を.profile
ホームディレクトリのファイルに配置しました。
さまざまなディスプレイマネージャー(gdm / kdm / sddm / etc)が奇妙な動作をしsetxbmap
、サスペンド/再開またはロック/ロック解除後にリセットするため、オプションを継承する方法で設定する方法を発見しました。常にリセットします。一時停止と再開を頻繁に行うため、xcape
実行中のコピーが大量に取得されないようにする必要がありましたが、これは以下の新しいスクリプトで解決されます。
最初にキーボード設定を変更しsudo gedit /etc/default/keyboard
て設定しXKBOPTIONS="ctrl:nocaps"
、次に~/.xprofile
以下の単一行を入力します。
ps aux | grep -i '[x]cape' && killall -9 xcape; hash xcape 2>&1 >/dev/null && xcape -e 'Control_L=Escape' -t 100 &
うまくいけば、スクリプトのさまざまなセクションが時間とトラブルを節約し、ログインのスタックを防ぎます。最初に実行中のインスタンスが存在するかどうかを確認し、それを強制終了xcape
します。これはCtrlをEscにマップするだけなので、このhash
部分はxcape
インストール済みであることを確認します。そうしないと、すべての起動のためにログインしようとするとシステムがハングする可能性がありますスクリプトは正常に終了することが期待されています。
setxkbmap -option 'caps:ctrl_modifier'; xcape -e '#66=Escape'
セルギー:
Ubuntu 14.04のシステム設定にはキーボードレイアウトがないため、gnome-tweak-toolを使用してCaps LockをCtrlにマップしました。その後、xcape -e 'Control_L = Escape'は機能しませんでしたが、xcape -dを使用した後、Caps Lockがキーコード66を生成し、それぞれ再マッピングすることを発見しました:xcape -e '#66 = Escape'。–セルギイ・ベロジヨロフ14年9月4日10:08
ルイス:
このブログ投稿によると、xcapeのみでこれを行うことができます。setxkbmap -option 'caps:ctrl_modifier'; xcape -e 'Caps_Lock = Escape' setxkbmap -option 'caps:ctrl_modifier'; xcape -e 'Caps_Lock = Escape; Control_L = Escape; Control_R = Escape' –ルイシモーノー15年8月4日10:06に