GUIなしでCentOS 7を使用しています。カスタムキーボードレイアウトを作成し、それをデフォルトのキーボードレイアウトとして永久に使用するには?どのファイルを編集する必要がありますか?
編集する:
ファイルを編集して再起動してキーマップを設定し、GUIで動作させることができますが、/usr/share/X11/xkb/symbols
端末には影響しません(少なくともCtrl+Alt+F5
.私のレイアウトを使用してください)。
/lib/kbd/keymaps/legacy/i386/xxx/
キーマップファイルをasの下に置いたxxx.map.gz
ので、実際にロードがうまく行ってloadkeys
実行すると、次のようなlocalectl
内容が表示されます。
# localectl
System Locale: LANG=en_US.UTF-8
VC Keymap: xxx
X11 Layout: us
しかし、Ctrl + Alt + F5で開いた端末では、キーボードのレイアウトは古くなっています。
答え1
既存の構成から始めます。
- 現在のキーボードレイアウトはを使ってダンプできます
dumpkeys
。 - 通常、他の基本レイアウトが配置されます。/lib/kbd/キーマップディレクトリはgzip圧縮ファイルで、その内容を使用
zcat
したり簡単にアクセスしたりできます。zless
特定のキーボードキーのコードを取得するには、を使用しますshowkey
。
キーボードレイアウトファイルを手動でロードするには、を使用しますloadkeys
。カスタムファイルへのパスを引数として受け入れます。
結果がうまくいけば、デフォルトで使用する新しいレイアウトの名前を設定できます。/etc/vconsole.conf:
KEYMAP="your-layout"
答え2
許可された回答にいくつかの詳細を追加するために私が見たものとそれを機能させるために行ったことがあります。このような内容を見つけたら、より多くのトリックとねじれを追加します。
を使用すると、sudo dumpkeys
次のような結果が出力されます。
keycode 12 = minus
shift keycode 12 = underscore
shift altgr keycode 12 = underscore
control keycode 12 = Control_underscore
shift control keycode 12 = Control_underscore
altgr control keycode 12 = Control_underscore
shift altgr control keycode 12 = Control_underscore
alt keycode 12 = Meta_minus
...
そして、以下のキーマップファイルを開くと、行/lib/kbd/keymaps/xkb/
に複数の(時にはあまりにも多くの)列があることがわかります。たとえば、次のようになります。
keycode 12 = U+002d U+005f U+002d U+005f Control_underscore Control_underscore Control_underscore ...
keymaps
:()のマニュアルページによると、man 5 keymaps
次のようになります。
キーが押されたときにそのキーにバインドされた操作が実行されるのは、当時適用される修飾子によって異なります。キーボードドライバは9つの修飾子をサポートします。これらの修飾子は(完全に任意)、、、、、、、Shiftで表されます。各修飾子は、次の表に従って関連するpower-2重みを持ちます。AltGrControlAltShiftLShiftRCtrlLCtrlRCapsShift
modifier weight
Shift 1
AltGr 2
Control 4
Alt 8
ShiftL 16
ShiftR 32
CtrlL 64
CtrlR 128
CapsShift 256
キーの有効なアクションは、すべての有効な修飾子の重みを追加することによって検索されます。デフォルトでは、修飾子は適用されないため、キーを押すか放すと、キー定義行の最初の列にあるアクションであるタスク番号0が実行されます。たとえば、タスク番号9(列10から始まる)は、ShiftキーとAlt修飾キーが有効な場合に有効です。
修飾子のアクティブ状態は、適切なキー入力を所望のキーにバインドすることによって変更することができる。たとえば、Shift シンボルをキーにバインドすると、そのキーを押すと Shift 修飾子が適用されるように設定され、キーを離すと修飾子の効果がキャンセルされます。 AltGr_Lockをキーにバインドすると、AltGrがキーを押したときに適用され、キーをもう一度押すと効果がキャンセルされるように設定されます。 (Shift、AltGr、Control、Altはデフォルトで同様のラベル付きキーにバインドされています。AltGrは正しいAltキーを表すことができます。)
私たちはU+002d
isHyphen-Minus
とU+005f
isを知ってlow-line
いるので、はっきりと見ることができます。キーマップファイルの各行はキー自体です。 Shift+key, Shift+altgr+key... 押したときのキーコードと keysys 文字出力です。注文する。
(表を忘れた場合は、表を使用してdumpkeys --long-info
表示できます。)
彼らは互いに対応しています:最初の部分の行は、2番目の部分の列に対応します。。
表で見ると、最もよく見えます:
+----------+------------------------+----------------------------+
| | | |
| col. | key to press(+ keycode)| chars to produce (keysys) |
| | | |
+----------------------------------------------------------------+
| | | |
| 0 | keycode 12 | minus |
| | | |
+----------------------------------------------------------------+
| | | |
| 1 | shift | underscore |
| | | |
+----------------------------------------------------------------+
| | | |
| 2 | altgr | underscore |
| | | |
+----------------------------------------------------------------+
| | | |
| 3(1+2) | shift + altgr | underscore |
| | | |
+----------------------------------------------------------------+
| | | |
| 4 | ctrl | ctrl + underscore |
| | | |
+----------------------------------------------------------------+
| | | |
| 5(4+1) | ctrl + shift | ctrl + underscore |
| | | |
+----------+------------------------+----------------------------+
| | | |
| 6(4+2) | ctrl + alt | ctrl + underscore |
| | | |
+----------+------------------------+----------------------------+