繁体   English   中英

使用NCurses获取CTRL字符

[英]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,您可以使用unctrlkeyname函数返回一个解析了相关信息的字符串:

  • 如果返回的字符串的长度为1,则它是一个简单的字符
  • 如果长度为2,并且第一个字符是^ ,那么它是一个控制字符,相应的规范按下字符是字符串的第二个字符。

    请记住, 按下可能有多种可能性,因为忽略了Shift ,并且有一些特殊情况,例如Control SpaceControl @可以产生相同的结果。

这与ncurses有关unctrl其他实现可能会返回字符代码128-255的空指针。 X / Open Curses在这种情况下应该做些什么是模糊的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM