
Xグラフィックサーバーでキーを再マップする方法を見つけました。しかし、時にはTTYを介して作業したいが、機能的Ctrl
にCaps Lock
。
.keymap
次の内容でファイルを作成してみました。
keycode 37 = Control_L
その後、ソーシングを使用しますが、loadkeys
役に立ちません。
しかし、Xの37
キーコードはCtrl
(によってxmodmap -pke | grep 'Control'
)TTYのキーコードが異なる可能性がありますか?それでは、正しいキーコードをどのように決定し、その後再マッピングを設定しますか?
答え1
上記のPorkfreezerの答えは素晴らしいです!これを永続的なソリューションにするには、ディレクトリを作成するか、ディレクトリを使用して.settings
TTY.local
にログインするときに使用できる独自のキーマップファイルを作成できます。これを行うには、現在使用しているキーボードキーマップ(私の場合us.map.gz
)を上記で選択したホームディレクトリにコピーすることをお勧めします。私には次のようになります。
cp /usr/share/kbd/keymaps/i386/qwerty/us.map.gz ~/.settings/
その後、必要なキーマッピングを含むようにファイルを解凍して編集できます。私はVimで動作するようにEscキーとCaps_Lockを切り替えました。次に、次のように、Linuxが見つけることができるディレクトリのファイルを指すシンボリックリンクを作成します。
sudo ln -s ~/.settings/custom.map /usr/share/kbd/keymaps/i386/qwerty/custom.map
これで、TTYにいる間に実行してsudo loadkeys custom
キーマップをロードできます。これをデフォルトにするには
/etc/vconsole.conf
この行を含むファイル
KEYMAP=custom
/etc/mkinitcpio.conf
次に、リストの最後に追加してファイルを編集します(スーパーユーザー権限が必要です)。これは次のようになります。keymap
hooks
...
HOOKS=(base udev autodetect modconf block filesystems keyboard fsck keymap)
...
その後実行
sudo mkinitcpio -p linux
それだけです!再起動後、TTYにログインするたびにカスタムキーマップが使用されます。
役に立ったことを願っています!
答え2
カーネルキーコードはXキーコードとは異なります。カーネルのキー37は実際にはK(qwertyにあります)です。カーネルキーコードを見つけるには、次のものを使用できますshowkey
。
$ showkey
kb mode was UNICODE
[ if you are using this under X, it might not work
since the X server is also reading /dev/console ]
press any key (program terminates 10s after last keypress)...
keycode 28 release # I released enter
keycode 29 press # I pressed control
keycode 29 release # I released control
keycode 58 press # I pressed caps lock
keycode 58 release # I released caps lock
したがって、マッピングするには、次のようにCtrlしますCaps Lock。
keycode 29 = Caps_Lock
または:Caps LockCtrl
keycode 58 = Control