Hatena::Grouplinux2

Going My Linux Way このページをアンテナに追加 RSSフィード

2012年01月21日(土)

コンソールHack(その1)

18:11 | コンソールHack(その1) - Going My Linux Way を含むブックマーク はてなブックマーク - コンソールHack(その1) - Going My Linux Way コンソールHack(その1) - Going My Linux Way のブックマークコメント

LINUXデスクトップHACKS」の第2章「コンソール」を読んでのメモ(その1)。

X環境でなく、コンソールでのキーボードの再定義についての Hack です。

キー設定の表示

以下のコマンドでキー設定が表示されます。--keys-only は簡略表示オプションです。

$ sudo dumpkeys --keys-only

以下のような出力になります。

  :
 (略)
  :
keycode  59 = F1 
        shift   keycode  59 = F13   # 「Shift」同時押下:「F13」送出
        altgr   keycode  59 = Console_13      
        shift   altgr   keycode  59 = Console_25      
        control keycode  59 = F25 
        shift   control keycode  59 = F37             
        altgr   control keycode  59 = Console_13      
        shift   altgr   control keycode  59 = Console_25      
        alt     keycode  59 = Console_1 # 「左Alt」同時押下: 仮想コンソール#1開く
  :
 (略)
  :

keycode はキーボードのキーを識別する値です。(keycode 59 は「F1」と刻印されたキー)

ハードウェア(キーボード)からは「keycode 59 のキーが打鍵された」という信号しか送られません。ドライバがその信号を受け取って「F1」が押下されたと解釈します。

以下のようにして、「F13」押下時に送出される文字列を調べることができます。

$ sudo dumpkeys | grep ^string | grep F13
string F13 = "\033[25~"

キーコードを調べる

(X環境でなく、コンソールで)以下のようにします。

起動している間にキーを押下すると、そのキーの情報が出力されます。

$ showkey
  :
keycode 59 press       # 押したキーの keycode が表示される
keycode 59 release
  :
(10秒放置すると終了する) 

キー設定

一括して変更する場合、以下のように設定を一旦ファイルに出力して編集するのがいいでしょう。

$ sudo dumpkeys --keys-only > mykeys  # 一旦 mykeys に書き出す
(vi mykeys でキー設定を編集)
$ sudo loadkeys mykeys      # キー設定

1個程度のキーの設定ならば直接標準入力から設定を送り込んでもいいです。

$ echo "keycode 58 = VoidSymbol" | sudo loadkeys # CapsLock を無効

$ echo "keycode 58 = Control" | sudo loadkeys    # CapsLock を Ctrl に変換

以下の例では CapsLock を押下すると date コマンドが実行されるようになります。

$ echo "string F100 = \"date\n\"" | sudo loadkeys  # F100 ラベル定義
$ echo "keycode 58 = F100" | sudo loadkeys

string で定義するラベル(上では F100) は Fxx のような形式にします。

キー設定をデフォルトに戻す

キー設定をデフォルトに戻すには、以下のようにします。

$ sudo loadkeys --default

キー設定はシステムリブートした場合などにリセットされるので、恒常的にキー設定をしたい場合は /etc/rc.local などに記述するといいでしょう。

また、X 環境で不具合が生じないように X を起動する前にはコンソール環境でのキー設定はデフォルトにします。(XFree86Xorg はコンソール設定を上書きするそうなので通常は気にする必要ありません)


詳細は、dumpkeys(1)、loadkeys(1)、showkey(1)、keymaps(5) を参照しましょう。

----

トラックバック - http://linux2.g.hatena.ne.jp/lnznt/20120121