私はvagrantでCentOS 6.4を実行し、vagrantを介してボックスにSSHを実行しています。私はしばらくバックスペースキーを操作しようとしました(例chronicled
:Centos端末はバックスペースとCtrl-hを正しく設定します。)
この作業の一環として、ロードキーを使用してキーマップの動作を修正してみましたが、うまく機能しないようです。そこでルートとして以下を行いました(指定どおり)。ここ):
[root@localhost vagrant]# dumpkeys -f | grep -iE string
...
string F9 = "\033[20~"
string F10 = "\033[21~"
...
[root@localhost vagrant]# echo 'string F10 = "foo" ' | loadkeys # to make F10 print "foo"
[root@localhost vagrant]# dumpkeys -f | grep -iE string # verify that keymap is changed
...
string F9 = "\033[20~"
string F10 = "foo"
...
今F10を入力してください。これは~
印刷の代わりに文字を提供し続けますfoo
。これはloadkeysが呼び出される前の元の動作でした。したがって、loadkeysがまったく影響を与えないように見えますか?
答え1
loadkeys
ioctl()
カーネル仮想端末デバイスを介して要求し、カーネルに組み込まれた端末エミュレータを再プログラムします。 .を介してコンピュータに接続すると、そのターミナルエミュレータを使用しませんssh
。実際には、そのマシンの端末エミュレータ、カーネル、またはユーザースペースはまったく触れません。
ローカルコンピュータの端末エミュレータは、ファンクションキーを制御シーケンスにマッピングします。もちろん、loadkeys
接続のローカル側とはまったく異なるコンピュータで実行されている端末エミュレータを再プログラムしないでくださいssh
。
スーパーユーザーとして実行していない場合、端末はそのログインセッションに関連していないため、ログインセッションで実行すると通信するカーネル仮想端末が見つからないというloadkeys
便利なエラーメッセージが表示されます。ssh
loadkeys