キーボードのキーを条件付きで入れ替える (Debian、X11、KDE ​​Plasma)

キーボードのキーを条件付きで入れ替える (Debian、X11、KDE ​​Plasma)

私のDell Latitudeにはこのキーボードレイアウトがあります

キーボード・レイアウト

HomeEndキーが複合キーにマッピングされているのは本当に困ったものです。そこで、これを追加してとを入れ替えることFnができました(実際はドイツ版です)PageUpHomePageDownEnd/usr/share/X11/xkb/symbols/de

xkb_symbols "basic" {
  ...
  key <HOME> {    [  Prior        ]   };
  key <PGUP> {    [  Home         ]   };
  key  <END> {    [  Next         ]   };
  key <PGDN> {    [  End          ]   };
  ...
}

期待通りに動作しています。ただし、ラップトップをそのまま使用する場合と、ドッキング ステーションと本格的なキーボードを使用して作業デスクで頻繁に切り替える必要があるため、このハックは煩わしいです。

この xkb シンボル ファイルの操作には、再起動 (または少なくともデスクトップ環境の再起動) が必要です。実行時に動作を切り替えることはできますか? USB-C ドックを認識する udev フックのように、自動化することもできますか?

答え1

を使用してレイアウトを切り替えることができますsetxkbmap。たとえば、私は Dvorak レイアウトを使用していますが、ローカルに変更を適用して /usr/share/X11/xkb/symbols/deドイツ語レイアウトに切り替えました。

setxkbmap de

PGUP が Home として動作するか確認したところ、動作しました。その後、dvorak に戻しました。

setxkbmap dvorak

元のレイアウトとカスタム レイアウトを切り替える場合、質問で示した 4 行を元のdeレイアウト ファイルから削除し、変更を加えた新しいカスタム レイアウト ファイル (たとえば、/usr/share/X11/xkb/symbols/de-modified) を作成するのが最善の方法だと思います。2 つのレイアウトを切り替えるのに、再起動や X の再起動は必要ありません。

setxkbmap de # PGUP wouldn't work as home
setxkbmap de-modified # PGUP would work as home

関連情報