【问题标题】:How to read every key on Keyboard?如何阅读键盘上的每个键?
【发布时间】:2015-07-04 17:27:14
【问题描述】:

我们如何读取键盘上每个键的 ascii?

我使用getch() 读取delete 和其他类似的键.. 但不读取FN keysNumlock 或任何全局快捷键..

那么如何在 C 程序中捕获这些键?

【问题讨论】:

    标签: c linux keyboard ascii


    【解决方案1】:

    提到了三种情况:

    1. 删除等,
    2. FN 键(功能键)
    3. NumLock(特殊键)

    在 Linux 的上下文中,getch 指的是一个 ncurses 函数。如果您使用的是 ncurses,那么您可以告诉它解码功能键(发送一系列字符)并将它们作为单个数字返回(恰好太大,无法放入 char)。例如

    int ch;
    keypad(stdscr, TRUE);
    ch = getch();
    

    NumLock 是不同的情况,因为它(如 controlshift 键)被用作 修饰符 em> 并且通常不发送任何字符:

    • X Window 环境就是这样使用它的——it 可以直接读取底层的scancode。 X 程序(如xterm)可以读取具有此信息的X 事件。在这种情况下,xev 的源代码是一个很好的起点。
    • 在控制台环境中,可以使用特定于 Linux 的调用来读取数据。如果您真的需要,console_ioctl(4) 手册页是一个不错的起点。

    【讨论】:

    • 谢谢。那是有见地的:)。现在进入代码。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 2012-03-02
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    相关资源
    最近更新 更多