如何从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
但这似乎不是编写程序的可靠信息。有谁知道这样做的方法?
答案 0 :(得分:1)
That actually is reliable(但有64,而不是96)。 Ctrl + A 一直通过 Ctrl - _ 得到妥善处理(不建议使用Ctrl- @ NUL的其他含义。)
答案 1 :(得分:1)
除了直接的ASCII测试,使用 ncurses ,您可以使用unctrl
或keyname
函数返回一个解析了相关信息的字符串:
如果长度为2,第一个字符为 ^
,则它是一个控制字符,相应的规范按下字符是第二个字符字符串。
请注意,按下可能有多种可能性,因为忽略了 Shift ,并且有一些特殊情况例如 控制 空间 与 控制 @
,可以产生相同的结果。
使用 ncurses :unctrl
的其他实现可能会返回字符代码128-255的空指针。 X/Open Curses对于该案件应该采取的措施含糊不清。