How to get Ctrl, Shift or Alt with getch()
ncurses ?
I cannot get it work to get Ctrl, Shift or Alt with getch()
using ncurses ? Do I miss something in the man ?
令人惊奇的是,有时正确的答案会被降级,而“权威”放弃的答案会被提升……只要有一点创造力,key_name 实际上就掌握了解决这个问题的正确钥匙,但有一个警告 - SHIFT/ALT/CTRL 是同时按下其他键:
首先,对于“普通键”(例如可打印的键),您可以轻松检测到移位,因为它是大写的。
对于特殊键,例如KEY_LEFT,你会看到选择SHIFT时生成的代码实际上是KEY_SLEFT。 KEY_RIGHT 同上。不幸的是, KEY_UP/KEY_DOWN 却没有这样的运气,它们似乎不受 SHIFT 的影响。因此,您可以通过 getch() 返回的字符来区分 - KEY_S.. 意味着按下了 Shift 键。
对于 ALT(至少没有被 X 或 Aqua Windowmanager 捕获的东西),keyname 会将键转换为 M...之类的东西。
对于 CTRL,您将在实际键名称前面看到一个“^”。例如 ^R 代表键 18
因此,您现在可以通过一个简单的代码片段找出 switch(getch) 语句等的关键代码:
ch = getch(); endwin(); printf("KEY NAME : %s - %d\n", keyname(ch),ch);
就是这样。在明确地说“不能”之前先三思。也许有一种不太明显的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)