C 检测用户何时输入

C Detect when user is typing

我想知道 C 中是否有一种方法可以检测用户何时键入。 我实际上读过这个 post 但我找不到在 Windows OS...[= 中将我的控制台从行模式切换到字符模式的方法11=]

“ncurses”库是它所说的唯一方法吗?... 我不能像 java 那样创建一个观察“输入”流的线程吗?

我只需要“事件处理程序”,我的其余代码将通过 Winsock 向客户端发送消息,如“USER_NAME 正在输入”,如 Whatsapp...

有什么办法吗?

如果使用Windows,则可以使用GetAsyncKeyState()。它在 Windows.h 中定义和实现,并使用 User32.libUser32.dll 实现。它不仅检测按键点击,还提供有关按键状态和按键点击顺序的信息:

Determines whether a key is up or down at the time the function is called, and whether the key was pressed after a previous call to GetAsyncKeyState.

它还能够处理 序列 击键,包括 virtual keys 的击键序列,如下所示:

一个简短的例子:

short state=0;
short state1=0;

state = GetAsyncKeyState(VK_CONTROL);
if (0x80000000 & state) //check instantaineous state of key
{
    state = GetAsyncKeyState(VK_SHIFT); 
    if (0x80000000 & state) //check instantaneous state of key
    {
        state = GetAsyncKeyState('h'); 
        state1 = GetAsyncKeyState('H'); 
        if ((0x80000000 & state) || 
            (0x80000000 & state1))

此特定示例是捕获修改后的按键点击序列的摘录,但该函数可用于简单地捕获任何按下的键。

听起来像“kbhit”可能适合你。 There is一个例子。