[英]Getting CTRL characters with NCurses
如何从NCurses库中获取控制键? 我需要知道getch ()
的结果是否是用ctrl按下的字符,以及用它按下了什么字符。 我用google搜索“ctrl keys ncurses”和“control keys ncurses”没有多少结果。
我从快速测试中知道(至少在我的情况下)所有CTRL字符与字符相关的差异为96。
即
akey is 97
^Akey is 1
bkey is 98
^Bkey is 2
ckey is 99
^Ckey is 3
但这似乎不是编写程序的可靠信息。 有谁知道这样做的方法?
这实际上是可靠的 (但有64,而不是96)。 按Ctrl + A一路到Ctrl - _得到妥善处理(使用CTRL- @是由于NUL的其他含义灰心)。
除了直接的ASCII测试之外,使用ncurses,您可以使用unctrl
或keyname
函数返回一个解析了相关信息的字符串:
如果长度为2,并且第一个字符是^
,那么它是一个控制字符,相应的规范按下字符是字符串的第二个字符。
请记住, 按下可能有多种可能性,因为忽略了Shift ,并且有一些特殊情况,例如Control Space与Control @
可以产生相同的结果。
这与ncurses有关 : unctrl
其他实现可能会返回字符代码128-255的空指针。 X / Open Curses在这种情况下应该做些什么是模糊的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.