UNIXのキー入力

キー入力時の動作フロー

  • キーボードが打鍵されスキャンコードが発生し、キーコード(RETURNキーなら28、DELキーなら111など)に変わりOSに伝わる。
  • OSによってキーコードがkeysym(Delete、Returnなど意味のある言葉)に変換される。
    • これは/lib/kbd以下のキーボードデータベースファイルで定義される。
  • 端末エミュレータによってkeysymがエスケープシーケンスに変換される。
    • エスケープシーケンスはCTRL+V [確認したいキー]で見てみることができる。
  • エスケープシーケンスがキー特性(ニーモニック)に変換される。
    • 端末データベース(terminfo)によって定義されており、環境変数TERMで切り替えることができる。
    • terminfoの内容はinfocmp linuxなどとして確認できる。

キー入力の解釈を変える方法

端末データベースの修正

 infocmp xterm > xterm.terminfo
 vi xterm.terminfo
 tic xterm.terminfo
  -> .terminfo以下にファイルができる

シェルの挙動の修正

bindコマンドで

 bind '"?e[3~":backward-delete-char'

.inputrcで

 $if term=xterm
 "?e[3~": backward-delete-char
 $endif 

上のエスケープシーケンスはCTRL+Vを使って入力する事!

参考

http://www.uic.edu/depts/accc/software/the/app2.html http://www.tldp.org/HOWTO/BackspaceDelete/index.html


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2006-10-01 (日) 07:37:41