2014年1月1日水曜日

shell, keycode?: よくわからないシェルの ^I とか ^[[A とかのよくわかない調べ方

よくわからない。シェルの世界ではキーコードらしきものを特別な意味として解釈される特定の文字の組み合わせで表現する、みたいなんだけど、どこの何のドキュメントを読んだらそのルールが正確に記述されているのかがわかりません。

わかりませんが、とりあえずお手元のキーボードまたは仮想キーボードデバイスのエミュレーションなどを使いつつ、どのキーがどんな記述で表されるのかを調べる簡単な方法は思いつきました。

sleep 3
^[[A

zshにはsleep内部コマンドがあり、パラメーターの秒数だけスリープしてくれます。そのスリープしている間に調べたいキーを発行すれば、そのキーを表す謎の文字の組み合わせがそのまま標準出力にあらわれてしまう、というものです。

上記の例 ^[[A はPC/JP106互換キーボードから Up キー(カーソルの↑キー)を押した例です。sleep中はいくつでも調べられます。

ちなみに、TAB^I (はっと・らーじあい)の様です。これは zsh の bindkey に乱暴に bindkey "  " ls (実際には""の中にはTAB文字そのものを打ってある)とかしてbindkey -L | grep ls したらそんな表記になってたのでわかりました。

どうやらSuperキー(Windowsキー、Commandキー)は単独では使えませんが、例えばSuper+z^X@sz となる様です。

zsh で bindkey しようと思ったものの、このキーコードらしきものの記述ルールがさっぱりわからなかったので、差し当たり使いたい分だけ調べる方法を考えてみたのが「sleep 中にタイプしてみる」でした。

一応、目的(Superキーとかbindkeyしたい)は果たせたのですが、このシェルの世界でのキーコードの記述ルールが、よくわかりません。どこの何にこの^[[AがUpになるとかのルールが書いてあるんだろう?

0 件のコメント:

コメントを投稿