如何读取键盘上的每个键?

时间:2015-07-04 17:27:14

标签: c linux keyboard ascii

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

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

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

1 个答案:

答案 0 :(得分:1)

提到了三种情况:

  1. 删除等,
  2. FN键(功能键)
  3. NumLock(特殊键)
  4. 在Linux的上下文中,getch指的是ncurses函数。如果您正在使用ncurses,那么您可以告诉它解码功能键(发送一系列字符)并将它们作为单个数字返回(这些数字恰好太大而不适合char)。例如

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

    NumLock 是一个不同的情况,因为它(如 control shift 键)用作修饰符并且通常不会发送任何字符:

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