首页 > 解决方案 > 使用 getchar() 在原始模式下捕获 Ctrl-Enter?

问题描述

在将终端设置为原始模式后,使用 getchar() 处理击键时,有什么方法可以捕获组合键 Ctrl-Enter 吗?

测试它时,我只得到 char 值 10,无论是否按住 Ctrl,它都是相同的。

标签: linuxterminalio

解决方案


在进行了更多实验之后,似乎大多数终端不会为 Ctrl-Enter 发送唯一的键符。通过使用 getchar 循环,您可以查看任何终端按键的完整键符代码:

// set terminal to raw, then...
while( int c = getchar() ) printf( "%d ", c );

某些键(如 F1 和 Ctrl-K)会生成代码,但其他组合键不会。不幸的是,Ctrl-Enter 不是可编码的组合键。当然,使用具有 root 访问权限的信号可以从本地控制台检测到,但不能从终端检测到。


推荐阅读