web-dev-qa-db-ja.com

Caps LockをCtrl-bに再マップ

Xkbまたは他のツールを使用してCaps Lockを永続的にバインドする方法 ctrl+b ターミナルにいる間?

(これは作ることです Caps Lock tmuxのデフォルトのプレフィックスキー。特定のキーにマップすることもできます。代わりにtmuxプレフィックスにすることができるファンクションキー)

5
mahemoff

XKBはXwindowsまたはWayland GUIに適しています。仮想コンソールには影響しませんが、GUI端末エミュレーターは問題ありません。 XKBの背景については 一部(概要、システムとユーザー) .. その他(カスタムオプション) .. 回答(カスタムルール)

以下により、通常使用するツール(setxkbmaplocalectl設定、GNOMEパネルなど)を使用して、caps:myf13などの新しいオプションを既存のXKBレイアウトに追加できます。


オプションの定義

既存のXKB capslockオプションは、/usr/share/X11/xkb/rules/evdev.lstにリストされています。 .../rules/evdevファイル内の対応するオプションを見ると、これらのオプションはすべてファイル.../symbols/capslockからロードされていることがわかります。それらはすべて修飾キーであり、おそらく最良の例ではありませんが、caps:backspaceは良い比較かもしれません。ファイルを見ると、このオプションを定義しているスタンザが見つかります。

hidden partial modifier_keys
xkb_symbols "backspace" {
    key <CAPS> { [ BackSpace ] };
};

grep '他のシンボルファイルを調べてみると、F13シンボルは単にF13であることがわかります。新しいオプションスタンザは次のようになります。

hidden partial modifier_keys
xkb_symbols "myf13" {
    key <CAPS> { [ F13 ] };
};

ご覧のとおり、キーに割り当てられたオプションとシンボルの名前のみを変更しました。


引っ掛ける

あとは、新しいスタンザを接続するだけです。基本的なXwindowsシステムでは、setxkbmapxkbcompなどのコマンドラインツールを使用して、 カスタムユーザーの場所 で問題ありません。 GNOME、KDE、またはWaylandシステムの場合、システムXKBデータベースに変更を加える必要があります。

システム変更の例として(これらのファイルを作成または編集するにはSudoアクセスが必要です):

  • カスタムスタンザを新しいシンボルファイル(例:/usr/share/X11/xkb/symbols/mycaps)に配置します。

  • これを/usr/share/X11/xkb/rules/evdevの行のすぐ下のcaps:backspaceに追加します。

      caps:myf13   =   +mycaps(myf13)
    
  • ... /usr/share/X11/xkb/rules/evdev.lstに追加:

      caps:myf13      Caps Lock is F13
    
  • ... /usr/share/X11/xkb/rules/evdev.xmlに追加:

          <option>
            <configItem>
              <name>caps:myf13</name>
              <description>Caps Lock is F13</description>
            </configItem>
          </option>
    
  • 最後に、.../rules/evdev*ファイルのバックアップを作成するか、パッチファイルを作成します。 xkb-dataパッケージが更新されるたびに、変更は上書きされます。変更スタンザを.../symbols/capslockファイルに保存した場合、同様にバックアップする必要があります。

これらの変更が行われたら、このオプションを他のXKBオプションであるかのように設定できるはずです。コントロールパネルのGNOME/KDEセッションを再起動して変更を反映する必要があるかもしれませんが、setxkbmapなどのツールはすぐにそれを見つけるはずです:setxkbmap -option caps:myf13

3
quixotic