web-dev-qa-db-ja.com

LinuxコンソールでのCaps-Lockをエスケープに、メニューを作成に再マッピング

Xを実行するときは、.xmodmaprcを使用して特定のキーを次のように再マップします。

! Make it so that both Caps Lock and Escape do Escape
clear Lock
keysym Caps_Lock = Escape
! Remap the menu key as Compose
keysym Menu = Multi_key

コンソールで同じことをどのように達成できますか?

更新

私の答えで与えられた部分的な解決策に加えて、私はコンソールがCTRL -.を作成にマップすることを学びました。だから私はそれに慣れることができるかもしれません。メニューキーを作成として設定するのはそれほど簡単ではありません。nulが割り当てられたキーコードがたくさんあり、メニューの代替名の明白な候補がないためです。

また、作成バインディング自体は、Xで使用していたものよりもはるかに制限されており、私が頻繁に使用する特殊文字のほとんどはそこにないことにも気づきました。おそらく、X構文の構成バインディングをloadkeysが読み取れるものに変換するユーティリティがありますか?

9
intuited

コンソールのキーマップを編集する必要があります。コンソールで、EscapeをCaps Lockに、CapsLockをEscapeにマップしました。仕組みは次のとおりです。

  1. まず、キーマップを見つける必要があります。私は標準の米国のレイアウトを使用しています。私のシステムでは、それは/usr/share/keymaps/i386/qwerty/us.map.gzの下にあります。
  2. us-nocaps.map.gzなどの新しい名前でファイルのコピーを作成します。
  3. ファイルを解凍し、テキストエディタで開きます:gunzip us-nocaps.map.gz && vim us-nocaps.map
  4. ファイル内のマッピングを好みに合わせて変更します。たとえば、keycode 58 = Caps_Lockkeycode 58 = Escapeに変更しました。
  5. ファイルをgzipで圧縮し、ロードします:gzip us-nocaps.map && loadkeys us-nocaps

もう1つ、新しいキーマップが常に起動時にロードされるように、何らかの方法でディストリビューションを構成する必要があります。そうしないと、常にloadkeysを使用してキーマップを手動でロードする必要があります。それをどのように行うかは、使用しているディストリビューションによって異なります。

8
Cedric

新しいDebianディストリビューションの場合、これはもう必要ありません。

キーボードファイルには、キーボードのプロパティが記述されています。コンソールでキーボードを構成するために、setupcon(1)によって読み取られます。 Debianシステムでは、デフォルトのキーボードレイアウトは/etc/default/keyboardで記述されており、Xとコンソールの間で共有されます。 (マンキーボード)

/etc/default/keyboardXKBOPTIONS="caps:escape"を設定し、次の手順を実行します。

~$ Sudo setupcon

使用可能なすべてのキーボードモデル、レイアウト、バリアント、およびオプションの説明は、/usr/share/X11/xkb/rules/xorg.lstで入手できます。 "(マンキーボード)

3
Ingo

Cedricの助けを借りて、Ubuntuが$ man loadkeysが想定しているキーマップ(/usr/share/keymaps)をインストールしていないことを発見しました。これはまったく新しいインストールなので、インストール時に選択したもの以外のキーマップを取得するために、パッケージをインストールする必要があるかもしれません。

その角度を追求する代わりに、そしてソリューションをもう少し堅牢で便利にするために、私はこれを行っています:

    $ Sudo dumpkeys | sed 's/CtrlL_Lock/Escape/' | Sudo loadkeys

CedricのシステムがCapsLockにCaps_Lockを使用し、私のシステムがCtrlL_Lockを使用する理由については少し混乱していますが、それでも機能しています。

1
intuited