1

我想对光标键做出反应;为此,我想找出当前终端以规范方式使用的转义序列。大多数解决方案"\e[A"在源代码中只包含字符串等。我知道如果目标系统使用不同的转义序列,这不是可移植的。

我尝试使用tput来获得正确的转义序列,但tput kcud1返回的转义序列与用于向下箭头键的转义序列不同:它返回"\eOB"但键结果为"\e[B". 但是没有给 tput 的 capname 导致这个字符串;我能管理的最好的方法是 tput cud ,它返回 "\e[%p1%dB" ,从中剥离所有参数最终将成为所需的字符串。但是,剥离参数听起来也不是很好。

找出箭头键在按下时会产生的正确转义序列的规范方法是什么?tput我会对使用甚至curses完全不同的方法的解决方案感到高兴。

4

2 回答 2

2

光标键发送的内容取决于键盘模式。

tput报告它们的应用程序模式值,但默认情况下,键盘处于标准模式。

DEKCKM命令可用于更改光标键的行为,例如

printf "\033[?1h"

或者您可以使用将smkx键盘设置为应用程序模式的命令:

tput smkx

重置:

printf "\033[?1l"

或者

tput rmkx
于 2013-09-09T12:32:47.357 回答
0

我认为您需要的是tput cud1(没有k)。您还可以tput在此处获取命令列表:

http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x405.html

您还可以通过 将这些序列存储在变量VAR=$(tput xyz)中。

一切都在man terminfo。在线: http: //www.manpagez.com/man/5/terminfo/

于 2013-09-06T13:18:41.597 回答