Linuxでコンソールキーマップを変更するには?


36

私は交換EscCapsLock、コンソールで(Xではなく、使用しますxev)、どうすればいいですか?

私のOSはUbuntuです。

回答:


60

仮想コンソールのキーボードレイアウトを操作するツールはloadkeysdumpkeysおよびshowkeyです。彼らのマンページを読んで、彼らの複雑さについて自分自身に知らせてください。

これらのツールは仮想コンソールでのみ機能し、gnomeのようなグラフィカル環境のターミナルエミュレータでは機能しないことに注意してください。違いについて学ぶには、この質問と回答を読んでくださいhttps : //askubuntu.com/questions/14284/why-is-a-virtual-terminal-virtual-and-what-why-where-is-the-real-terminal

あなたがしたいことをするための短いガイドがあります:

  1. 現在のキーボードレイアウトを保存します。

    $ dumpkeys > backup.kmap
    

    問題が発生した場合は、次のコマンドを使用してキーマップを復元できる場合があります。

    $ sudo loadkeys backup.kmap
    

    キーボードがめちゃくちゃになっていて、これすらできない場合は、リブートするしかありません。

  2. キーに割り当てられているキーコードを確認します。

    $ showkey
    

    次に、ESCキーとCAPSLOCKキーを押します。キーコードが画面に表示されるはずです。キーコードに注意してください。私のシステムでは、ESCにはキーコード1があり、CAPSLOCKにはキーコード58 showkeyがあります。10秒間の非アクティブ後に終了します(少なくとも、ubuntu 10.04ではそうです)。

  3. ダンプキーのESCキーとCAPSLOCKキーの名前に注意してください。

    $ dumpkeys | grep 1
    ...
    keycode   1 = Escape
    ...
    $ dumpkeys | grep 58
    ...
    keycode  58 = CtrlL_Lock
    ...
    
  4. dumpkeysのキーマップ行に注意してください。

    $ dumpkeys | head -1
    keymaps 0-127
    
  5. ESCとCAPSLOCKを切り替えるキーマップファイルを作成します。

    keymaps 0-127
    keycode   1 = CtrlL_Lock
    keycode  58 = Escape
    
  6. キーマップをロードします。

    $ sudo loadkeys swap_esc_capslock.kmap
    
  7. テスト:CAPSLOCKキーのテストは明らかです。CAPSLOCKキーを押して、他のキーが大文字で表示されるかどうかを確認します。ESCキーをテストするには、CTRL + Vに続いてESCを使用できます。印刷するはず^[です。Ctrlキーを押しながらVキーを押すと、シェルは解釈せずに、次のキーをそのまま出力します。

再起動のたびにこの変更をロードするには、/etc/rc.localファイルに次の行を追加します。

/usr/bin/loadkeys /path/to/swap_esc_capslock.kmap

以下を含むがこれらに限定されないさまざまなページから収集された情報:


5
sudo setupcon --saverc.localを編集するのではなく、変更を永続的にするためにも使用できます。それは本質的に同じですdumpkeys < /dev/tty1 | gzip > /etc/console-setup/cached.kmap.gz
ブクゾール

使用する方が安全である/usr/bin/loadkeys/etc/rc.localパス環境変数がこの段階で設定することが保証されていないため。でsudo必要ありませんrc.local
8月カールストローム

@AugustKarlstrom rc.localシステムが起動するたびにコマンドが実行されます。@ bukzorのはsudo setupconありませんrc.local、それは任意の実行時のスタートアップコードを追加することなく、システムのデフォルトのキーマップを置き換えるワンタイムセットアップコマンド、です、。に追加するloadkeysrc.local、追加の起動コードが追加され、システムのデフォルトのロードキーで既に実行されていたものが複製されます。このrc.localメソッドは、キーマップへの非標準のパスに依存するため、実際には安全性が低下する可能性があります。
RobertL

@RobertLはsetupconメソッドを詳しく説明してください。独自の回答を追加するか、必要に応じて編集します。
レスマナ

についての@bukzorの声明を確認できませんsetupcon。8月は、私が思うに入らないsudo setupcon --saveだろうという仮定をしrc.localたようですが、もしそうなら、あなたはを必要とsudoしません rc.local。回答を更新する前に、さらに情報が必要だと思います。主な質問は、「変更されたキーマップをインストールして、ブートプロセス中に自動的にロードされるようにする方法」です。どちらがより良い方法なのrc.localか、キーマップをインストールするのか、キーマップのインストールが機能するのかさえ、私は本当に知りません。私は最近これを調査しており、ここで確認します。
-RobertL

4

2つのcapslocksキーだけが必要な場合は、「ctrl:swapcaps」の代わりに「ctrl:nocaps」を使用します(別の名前のcapslockは依然として役に立たない)。

X11:(参照:/usr/share/X11/xkb/rules/base.lst

sudo vim /etc/default/keyboard
    XKBOPTIONS="ctrl:swapcaps"
udevadm trigger --subsystem-match=input --action=change
sudo restart lightdm

テキストコンソール:(setupconから盗まれた)

#!/bin/sh
. /etc/default/console-setup 
. /etc/default/keyboard
ckbcomp $acm_option $rules_option -model "$XKBMODEL" \
            "$XKBLAYOUT" "$XKBVARIANT" "$XKBOPTIONS" \
            | gzip -9 2>/dev/null >/etc/console-setup/cached.kmap.gz
loadkeys /etc/console-setup/cached.kmap.gz
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.