直接写入/dev/input/event5,写入字符设备文件

San*_*war 5 c linux file input

我的键盘有音量控制。我正在尝试直接触发/模拟音量增大事件。使用xxd -c 24 event5,我可以监视文件包含的内容。当我使用实际的音量按钮时,它会正常触发它。下面是一个 C 脚本,它写入按钮发送的确切数据。

int main()
{
    int f = open("/dev/input/event5", O_WRONLY);
    if(f == -1)
    {
        perror("Could not open event5");
        return 1;
    }
    struct input_event e;
    gettimeofday(&e.time, 0);
    e.type = 0x0400;
    e.code = 0x0400;
    e.value = 0x0e9000c00;
    write(f, &e, sizeof(e));

    gettimeofday(&e.time, 0);
    e.type = 0x0100;
    e.code = 0x7300;
    e.value = 0x01000000;
    write(f, &e, sizeof(e));

    gettimeofday(&e.time, 0);
    e.type = 0x0000;
    e.code = 0x0000;
    e.value = 0x00000000;
    write(f, &e, sizeof(e));
    return 0;

}
Run Code Online (Sandbox Code Playgroud)

但是xxd -c 24 event5没有检测到写入,也没有在我的桌面上触发音量增大操作。

文件打开正常,没有错误。但我仍然怀疑 open 命令有问题。这让我问

你如何写入这种类型的文件?

crw-rw----   1 root input 13, 69 Feb  1 17:26 event5
Run Code Online (Sandbox Code Playgroud)