解决方法
令人惊讶的是,有时正确的答案会被降级,而“权威性”放弃的答案会得到提升……有了一点创造力,key_name实际上掌握了解决这个问题的正确关键,有一点需要注意 – SHIFT / ALT / CTRL是同时按下其他键:
>首先,对于诸如可打印的“普通键”,您可以轻松检测到移位,因为它是大写的.
>对于特殊键,例如KEY_LEFT,您将看到选择SHIFT时生成的代码实际上是KEY_SLEFT.同上KEY_RIGHT.不幸的是,KEY_UP / KEY_DOWN没有这样的运气,SHIFT似乎并不担心.所以你可以通过getch()返回的char来区分 – KEY_S ..意味着按下了shift.
>对于ALT(至少没有被X或Aqua Windowmanager困住),keyname会将键转换为M ……某事.
>对于CTRL,您将在实际的键名前面加上“^”. E.g ^ R代码18
因此,您现在可以通过一个简单的代码段找出switch(getch)语句的关键代码等:
ch = getch(); endwin(); printf("KEY NAME : %s - %d\n",keyname(ch),ch);
就是这样.在明确地说“不能”之前先想想.也许有一种不太明显的方式.