Xfce

更改 xfce4-terminal 的鍵映射

  • August 9, 2019

您好我想稍微更改 xfce4-terminal 中的鍵映射,可能類似於將 Xterm.VT100.translations 添加到 .Xresources。

特別是,我想讓 ctrl-backspace 刪除最後一個單詞,並 ctrl-delete 刪除下一個單詞。

獎勵:我想讓 alt 像 ctrl(重複功能)一樣用於退格、刪除、左箭頭、右箭頭。

如何在 xfce4-terminal 中完成所有或任何這些事情?

編輯:到目前為止的進展:我正在使用 bash,而 bash 使用 readline 庫和 bash 內置函式“bind”將鍵序列映射到 readline 函式。我需要的功能是“shell-kill-word”和“shell-backward-kill-word”。原則上,我應該能夠做這樣的事情:

"\C-Rubout":shell-backward-kill-word
"\C-Delete":shell-kill-word
"\M-Rubout":shell-backward-kill-word
"\M-Delete":shell-kill-word

但是,xfce4 終端仿真器或程序上游的某些組件(可能是視窗管理器、xfwm4、Xorg 程序本身?)不合作。通常,元鍵被轉換為轉義字元,例如:

"\ey":shell-kill-word  <-- Meta + y kills next word

但是使用退格鍵和刪除鍵我不走運。我測試了來自兩個終端仿真器 xfce4-terminal 和 xterm 的鍵碼,它們是由鍵盤上的退格鍵、刪除鍵和控制鍵組合生成的。正如 emacs 的 Ch Cl 命令所報告的,它們在這裡:

xterm:
 backspace:    DEL
 delete:       \e[3~
 \C-backspace: \C-h
 \C-delete:    \e[3;5~
 \M-backspace: y-umlaut (y with two dots over it)
 \M-delete:    nothing

xfce4-terminal:
 backspace:    DEL
 delete:       \e[3~
 \C-backspace: DEL
 \C-delete:    \e[3;5~
 \M-backspace: \e DEL
 \M-delete:    nothing

特別是,在 xfce4-terminal 中,不可能將 \C-backspace 綁定到 shell-backword-kill-word,因為它發送與正常退格完全相同的鍵碼。並且不可能將 \M-delete 綁定到 shell-kill-word,因為它根本不發送密鑰程式碼。

我很沮喪,因為切換到 Linux 並處理所有硬體/軟體兼容性問題的一個(重要)原因是 Linux 是如此可定制的。例如,當我將滑鼠懸停在視窗上時,我喜歡讓視窗獲得焦點,而不是點擊它們。在我看來,在現代 Linux 發行版中解決此類問題似乎是一項高優先級的任務。不幸的是,我沒有時間對 X 進行所有背景研究,而我需要做 xfce 來解決這個問題的下一步。對 Xorg 生態系統有更多了解的人可以為我指明正確的方向嗎?也許有一個替代終端仿真器可以做得更好?

最後一條資訊:在 X 視窗中執行 emacs,它會得到除一個鍵碼之外的所有鍵碼:

backspace:    <backspace>
delete:       <delete>
\C-backspace: <C-backspace>
\C-delete:    <C-delete>
\M-backspace: <M-backspace>
\M-delete:    nothing

好的,這就是我的.zshrcfor ctrl+ , ctrl+alt+ , alt+

## use Ctrl <- and Ctrl -> for jumping to word-beginnings on the CL
bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word                       
## the same for alt-left-arrow and alt-right-arrow            
bindkey '^[[1;3C' forward-word                          
bindkey '^[[1;3D' backward-word

在我的系統上,這些適用於crtl+delalt+del但我還沒有找到ctrl+backspacealt+的鍵backspace

bindkey '^[[3;5~' kill-word
bindkey '^[[3;3~' kill-word

您可以通過按Ctrl+V後跟所需的組合鍵來輸入代表每個組合鍵的奇數字元。例如按Ctrl+V後跟Ctrl+產生^[[1;5D

引用自:https://unix.stackexchange.com/questions/163446