* UNIXのキー入力 [#k9992b4d]
** キー入力時の動作フロー [#pc219b11]
- キーボードが打鍵されスキャンコードが発生し、キーコード(RETURNキーなら28、DELキーなら111など)に変わりOSに伝わる。
- OSによってキーコードがkeysym(Delete、Returnなど意味のある言葉)に変換される。
-- これは/lib/kbd以下のキーボードデータベースファイルで定義される。
- 端末エミュレータによってkeysymがエスケープシーケンスに変換される。
-- エスケープシーケンスはCTRL+V [確認したいキー]で見てみることができる。
- エスケープシーケンスがキー特性(ニーモニック)に変換される。
-- 端末データベース(terminfo)によって定義されており、環境変数TERMで切り替えることができる。
-- terminfoの内容はinfocmp linuxなどとして確認できる。
** キー入力の解釈を変える方法 [#vbe472c5]
*** 端末データベースの修正 [#fdf0f170]
infocmp xterm > xterm.terminfo
vi xterm.terminfo
tic xterm.terminfo
-> .terminfo以下にファイルができる
*** シェルの挙動の修正 [#ffd11c4b]
bindコマンドで
bind '"\e[3~":backward-delete-char'
bind '"?e[3~":backward-delete-char'
.inputrcで
$if term=xterm
"\e[3~": backward-delete-char
"?e[3~": backward-delete-char
$endif
上のエスケープシーケンスはCTRL+Vを使って入力する事!
** 参考 [#i6af7f57]
http://www.uic.edu/depts/accc/software/the/app2.html
http://www.tldp.org/HOWTO/BackspaceDelete/index.html