~/.Xmodmap
を使用して、XWindowSystemの実行中にキーボードのレイアウト/マッピングを変更することができました。 (Xプロトコル呼び出しのラッパーとしてlibxcbを使用するなど、Xプロトコルを介して直接実行することもできると思います)。
loadkeys
を使用して、console / ttyで(つまり、Xが実行されていないときに)同じことを(ある程度)行うことができました。 。
キーボードレイアウトを同様にカスタマイズする方法はありますが、単一のソース 、Xとコンソールの両方に影響を与えるような方法で。 「Xとコンソールにとらわれない」方法で?
(私が考えることができる唯一の方法は、カーネルの入力インターフェイスevdev
と通信する「キーボードドライバー」を作成することです。 、必要な入力を送信します(uinput
を介して) ?)、または何かですが、これが理にかなっているのか、それとももっと簡単な方法があるのかわかりません。)
承認された回答:
はい、方法はあります。これは、Debianのconsole-setupパッケージが実際に行う方法です。
- キーボードレイアウトは、管理者が
keyboard
という名前のファイルでXKB用語(モデル、レイアウト、バリアント、およびオプション)で指定します。 、通常は/etc/default/keyboard
。これは単一のソースです。テキストエディタで編集できます。 -
setxkbmap
プログラムにはこれらと同じXKB設定が与えられ、それに応じてX11サーバーが構成されます。- キーボード構成パッケージのインストール後のメンテナスクリプトは、
setxkbmap
を実行します 直接、/etc/default/keyboard
を使用 X11ディスプレイで検出された場合の設定。したがって、dpkg-reconfigure keyboard-configuration
X11 GUIターミナルエミュレータから実行すると、X11キーボードのレイアウトに影響します。
- キーボード構成パッケージのインストール後のメンテナスクリプトは、
-
setupcon
スクリプトはこれらのXKB設定を取得し、ckbcomp
に渡します。 キーボードマップを生成するユーティリティ。そのキーボードマップをloadkeys
を使用してカーネル仮想端末にロードします。 /kbdcontrol
。- このスクリプトは、サービスによってシステムのブートストラップで実行されます。
- それ以外の場合は手動で実行することもできます。
他のsystemdオペレーティングシステムは動作が異なりますが、単一のソースもあります。
- XKBレイアウト、バリアント、およびオプションは、
/etc/X11/xorg.conf.d/00-keyboard.conf
に保存されます。 。これは単一のソースです。- このファイルは、起動時にX11サーバーによって直接読み取られ、X11キーボードマップを直接設定します。
- このファイルは
systemd-localed
によって解析されます 起動時。systemd-localed
の間は、ファイルをテキストエディタで便利に編集することはできません。 サービスが独自のメモリ内情報で簡単に上書きするため、が実行されています。 - XKB情報を変更するには、
localectl
を実行します。 、別のサーバーと通信し、別のサーバーはsystemd-localed
と通信します 。
-
systemd-localed
/usr/share/systemd/kbd-model-map
のマッピングを使用して、XKB設定を仮想端末のキーボードマップ名に変換します 、次に/etc/vconsole.conf
に書き込みます 。 Debianシステムとは異なり、XKB情報からその場でマップを生成するのではなく、マップファイルにリストされている事前に提供された静的マップのみを選択します。 -
systemd-vconsole-setup
ブートストラップで実行され、/etc/vconsole.conf
を読み取ります 、loadkeys
を実行して、キーボードマップをカーネル仮想端末にロードします。 。
さらに読む
keyboard
。 console-setupユーザーズマニュアル 。 Debian。-
ckbcomp
。 console-setupユーザーズマニュアル 。 Debian。 - アンドリューT.ヤング(2011)。 キーボード構成 。
- Xkbはどこで構成を取得しますか?
- https://unix.stackexchange.com/a/326804/5132