Bash

兩個 Enter 鍵的行為不同

  • May 26, 2022

alacritty在 Zorin 16 下使用終端仿真器。我的兩個輸入鍵給出不同的輸出。

% showkey -a

Press any keys - Ctrl-D will terminate this program

^M   13 0015 0x0d
^J   10 0012 0x0a

主 Enter 鍵給出 ^M,數字鍵盤 Enter 鍵給出 ^J。

這對於 bash 和 zsh 都是如此。

我希望兩個鍵都給 ^M。

我怎樣才能做到這一點?

是的,它似乎alacritty預設配置為在鍵盤輸入時發送 LF(又名\n, ^J),並且無論是否啟用應用程序鍵盤模式(之後tput smkx),即使 terminfo 條目(至少在 Ubuntu 20.04 上)具有kent=\EOM,而所有其他終端發送 CR(和大多數發送\EOM之後tput smkx)。

您可以通過添加來更改它:

key_bindings:
 - { key: NumpadEnter, chars: "\r" }

對於您的~/.config/alacritty.yml(或該文件的首選路徑,有幾個選項,請參閱手冊)。

請注意,無論如何,終端設備驅動程序通常預設配置為在輸入時自動將 CR 轉換為 LF(icrnl在 的輸出中查找stty -a),因此在實踐中通常不會有太大區別。只有那些禁用該設置的 TUI 應用程序(就像showkey那樣),您可能會看到不同之處。

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