Ctrl + LeftArrowをターミナルの前の単語(XWindowSystemなし)にバインドしてみました。
しかし、Ctrl + LeftArrowとLeftArrowが端末で同じエスケープシーケンスを生成することを観察しました。
- 私はCtrl + Vを押します
- 左矢印を押す
- 私は受け取った
^[[D
- 私はCtrl + Vを押します
- Ctrl+左矢印を押します
- 私は受け取った
^[[D
Ctrl+右矢印にも同じ問題があります。どうすれば解決できますか?
(Debian: Linux v4.19.0-8-amd64)
ベストアンサー1
^[[D
左矢印で得た。
Ctrl - 左側はLinux VCとxtermに^[[151
あります。^[[1;5D
man keymaps
持っている:
Which of the actions bound to a given key is taken when it is pressed depends on what
modifiers are in effect at that moment. The keyboard driver supports 9 modifiers.
These modifiers are labeled (completely arbitrarily) Shift, AltGr, Control, Alt,
ShiftL, ShiftR, CtrlL, CtrlR and CapsShift. Each of these modifiers has an associated
weight of power of two according to the following table:
modifier weight
Shift 1
AltGr 2
Control 4
Alt 8
ShiftL 16
ShiftR 32
CtrlL 64
CtrlR 128
CapsShift 256
ShiftとControlと同様に、2つの「Alt」キーが同じ操作を実行するように変更しました。
例:キーマップファイルloadkeys
:
# three modifiers -> 8 cols. (AltGr missing):
#
keymaps 0-1,4-5,8-9,12-13
それから:
# left modifiers
keycode 42 = Shift
keycode 29 = Control
keycode 56 = Alt
keycode 58 = Caps_Lock
# right side...just Alt
keycode 54 = Shift
keycode 97 = Control
keycode 100 = Alt
通常、100 = AltGrです。
その後、デフォルトの「左」の後に2つの追加タスクを追加しました。
keycode 105 = Left F150 F151
string F150 = "\033[150"
string F151 = "\033[151"
これは2段階のプロセスでなければなりません。 「F150」は、変更されたキーを文字列に関連付けるために使用されるラベルです。
矢印キー(105)は以前のように「左」を生成しますが、ShiftとControlは選択されたエスケープシーケンスを生成します。
それから~/.inputrc
:
# Moving - modif. L+R Arrows in linux VC
# ascii codes in X / evdev / xterm
#
"\e[150": backward-word
"\e[1;2D": backward-word
"\e[154": forward-word
"\e[1;2C": forward-word
"\e[151": shell-backward-word
"\e[1;5D": shell-backward-word
"\e[155": shell-forward-word
"\e[1;5C": shell-forward-word
1;2D
振り返ってみると、Xが作ったものを選んだはずだった。これはいくつかの inputrc 行を保存します。しかし、これらのエスケープシーケンスは私にとってやや不透明に見えたので、独自のエスケープシーケンスを定義しました。
修飾子マッピングを記述するには、次のようにします。
# "Print Screen Sys Rq" is Nr 99
#
keycode 99 = F91 F92 F93 nul F95 F96
string F91 = " --help\n"
string F92 = " |less"
string F93 = " |grep "
string F95 = "()\033[D"
string F96 = "echo \'\033[4~\'"
--help
これで、以前使用していなかった「印刷」キーを押してプラスを書き込むことができますEnter
。 Xは「印刷」キーも無視するため、これはLinux VCでのみ機能し、XKBではこれを有効にする方法が見つかりませんでした。
「nul」エントリは「Shift + Control」の位置であり、渡されます。重量「Alt」の前に表示されます。
keymaps 0-1,4-5,8-9,12-13
:数値「0,1,4,5,8」は、「F95」のある 5 番目の位置に重み「8」を入れます。 「8」は「Alt」と定義されます。値2のAltGr重みをスキップしたいので、2,3,6,7がありません。
10個のFキーとShift、Control、Alt(左または右なし)の8つの組み合わせを組み合わせると、必要に応じて80のさまざまなキー機能が得られます。しかし、Shift + Control-F6を使って1つのことを行い、Control + Alt-F9を使って別のことをしたい人は誰ですか?