LinuxコンソールでPgUpのCtrl修飾子が無視される


1

Linuxをシングルユーザーテキストモードで実行しています( ここに記述されているように Ctrl+PgUp そして Ctrl+PgDn 期待通りに振る舞わないでください。を使う cat -v - 端末コードを表示するには、 PgUp そして Ctrl+PgUp 両方とも同じコードを生成します ^[[5~。私が見るグラフィカルモードで同じことをすること PgUp => ^[[5~ そして Ctrl+PgUp => ^[[5;5~ (そして両方のキーは期待通りに動作します)。したがって、私は推測します:

  • ハードウェアの問題ではありません
  • マッピング PgUp => ^[[5~ 意図したとおりに機能している
  • 問題はそれです Ctrl+PgUp のように見えます PgUp それがターミナルに着いたら。

私のユースケース(Vim)には私が設定できます PgUp として扱われる Ctrl+PgUpしかし、可能であれば、私は彼らに異なる振る舞いをさせたいのです。

これを修正するために編集できる設定はありますか?端末に到達する前に文字シーケンスを変更するものはありますか?

さらなる調査からのより多くのメモ:

  • テキストモードで起動するのではなく、tty1にドロップするだけでこれを再現できます( Ctrl+Alt+F1
  • 私は別のマシンでそれを再現することができます。
  • 私が走ったdirktの提案に従って echo $TERM そして得た linux

1
私のコンソールでは、端末タイプは linuxecho $TERM )、 infocmp linux を示す knp (次のページ)そして kpp (前のページ)にバインドされています ESC [ 6 ~ そして ESC [ 5 ~それぞれ。そのため、これはLinuxテキストコンソールの「機能」です。ただし、どのレベルが責任を負っているのか、またその設定方法は正確にはわかりません。エスケープシーケンスを認識するようにvimを設定しようとするのはもっと簡単かもしれません。
dirkt

@ dirktコメントありがとうございます。知りませんでした infocmp。しかし、問題は何ではないと思います PgUp にマップするが、それは PgUp そして Ctrl+PgUp 区別がつかない。明確にするために編集します。
stewbasic

Linuxのテキストコンソールが翻訳するので、それらはおそらく区別できないでしょう。 両方 knp そして kpp。あなたは簡単に最下層をチェックすることができます evtest私の推測では、 Ctrl キーがはっきりと見えるようになり、キーボードイベントがカーネル入力レイヤを離れてコンソール行の分野に入った後(または実際に翻訳が存在する場所にかかわらず)に翻訳が行われます。
dirkt

回答:


1

この役に立つ答え 私は解決策を導きました。私のデフォルトのキーマップ(から取得) sudo dumpkeys 含まれている

keycode 104 = Prior
...
string Prior = "\033[5~"

追加した

control keycode 104 = F105
...
string F105 = "\033[5;5~"

そして同様に PgDn 。エイリアスは任意の文字列にはできません。それはによってリストされたキーシムのうちの1つでなければなりません sudo dumpkeys -lだから、私は未使用のF105を選びました。

cat -v - 見せる ^[[5;5~ にとって Ctrl + PgUp グラフィカルモードと同じです。 Vimはまだ期待通りに反応しませんでした(なぜならそれはグラフィカルモードで動作するので、私は理由がわかりません)が、少なくとも Ctrl + PgUp とは異なる制御シーケンスを生成します。 PgUp 私はそれを .vimrc いつものように:

nnoremap ^[[5;5~ :tabp<Enter>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.