Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C程序识别控件或alt键_C_Special Characters - Fatal编程技术网

C程序识别控件或alt键

C程序识别控件或alt键,c,special-characters,C,Special Characters,我正试图写一个C程序,它知道control/alt/shift键被按下。我在Java中找到了一些提供这种功能的东西,但这对我帮助不大 void CMousepresentView::OnDraw(CDC* pDC) { int shiftValue=::GetKeyState(VK_SHIFT); if(!shiftValue) pDC->TextOut(0,50,"Shift not pressed"); else pDC->TextOut(0,50,"Shift pressed"

我正试图写一个C程序,它知道control/alt/shift键被按下。我在Java中找到了一些提供这种功能的东西,但这对我帮助不大

void CMousepresentView::OnDraw(CDC* pDC)
{
int shiftValue=::GetKeyState(VK_SHIFT);
if(!shiftValue)
pDC->TextOut(0,50,"Shift not pressed");
else
pDC->TextOut(0,50,"Shift pressed");

int ctrlValue=::GetKeyState(VK_CONTROL);
if(!ctrlValue)
pDC->TextOut(0,100,"Ctrl not pressed");
else
pDC->TextOut(0,100,"Ctrl pressed");
}
所以到目前为止,我所拥有的是相当基本的,但我必须从某个地方开始。但这根本不起作用

#include <stdio.h>
#include <ctype.h>

int main(void)
{
  char ch;

  do {
    ch = getchar();
    putchar(ch);
  } while(iscntrl(ch));
  return 0;
}
我希望ISCONTRL至少能让我从系统中得到一些反应,开始调试和识别控制序列按键。没有这样的运气

如果我能看到一个例子,输出控制被按下/控制被释放,我可能会找出其余的

更新: 我们在这方面取得了一些进展

更新:

我认为答案在于使用xlib。谢谢大家。

您不能在控制台程序中检查静音键,不仅仅是这些键。如果使用类似的东西,可能会将它们作为其他关键点的修改器


如果你想制作一个带有图形用户界面的程序,这不是问题。这是一个流行的框架。检查所选框架的文档。

您可以使用原始键盘模式找到与问题相关的结果


根据应用程序的不同,您可能可以使用能够接收原始键盘事件的应用程序。

您编写的程序是在终端窗口中工作还是创建自己的窗口?如果是前者,约阿希姆是正确的。如果是后者,有一种方法,但我不知道怎么做。顺便说一句,最上面的片段是Windows,Windows有一种非常简单的方法,我现在想不起来了。我确实看到了系统在执行cat/dev/input/by path/platform-i8042-serio-0-event-kbd时的一些响应,所以我认为这是有可能的,为什么它不能在控制台中工作,而是在Qt中?那没有道理。我想知道我是否能够捕获/dev/input/by path/platform-i8042-serio-0-event-kbd。@Justin:它可以在Linux控制台中工作,但不能在xterms上工作。@Justin QT是图形用户界面的框架,当图形程序处于焦点时,它可以接收所有键的事件。文本程序,如xterm中的程序,只能接收文本输入,有时带有ALT和CTRL等修饰符,但不能单独使用ALT,因为它不会生成字符。