有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

linux告诉java要听哪个键盘

我将一个键盘插入linux设备,然后通过ssh运行Java。我想知道是否有一种方法可以让Java监听来自特定键盘/终端的输入。由于我想要捕获的键盘插入了物理机器,并且没有用户登录,我不确定是否有办法做到这一点,但我想我可以在这里问一下


共 (1) 个答案

  1. # 1 楼答案

    如果您具有root权限,则可以直接从/dev/input下的键盘设备读取键盘事件。解码这些事件需要一点努力,但这是可以做到的;您可以在/dev/input keyboard format中阅读有关数据格式的信息

    此代码段读取键盘事件并识别您按下并释放的A-Z键:

        // replace path with path from your system
        DataInputStream in = new DataInputStream(
            new FileInputStream("/dev/input/by-id/usb-0430_0005-event-kbd"));
        String map = "    abcdefghijlkmnopqrstuvwxyz                                                                                                                                                                                                                                                                ";
        // sizeof(struct timeval) = 16
        byte[] timeval = new byte[16];
        short type, code;
        int value;
        while (true) {
            in.readFully(timeval);
            type = in.readShort();
            code = in.readShort();
            value = in.readInt();
            System.out.printf("%04x %04x %08x %c\n", type, code, value, 
                                                     map.charAt(value>>>24));
        }