c++ - 如何让 C++ 中的 ioctl 只管理我鼠标的 4 个按钮中的 2 个?

标签 c++ linux ioctl

部分代码如下:

extra_btn_fd = open("/dev/input/by-id/usb-Razer_Razer_Naga_2014-event-mouse", O_RDONLY); 

ioctl(extra_btn_fd, EVIOCGRAB, 1);

问题是它不仅控制了 2 个额外的按钮(前进和后退),还控制了点击按钮(我认为还有滚动)。

我正在尝试完全控制 2 个前进和后退按钮,而不是点击。

最佳答案

您必须在代码中过滤事件。例如像下面

while(1) {
  struct input_event event;
  read(extra_btn_fd, &event, sizeof(event));
  if (event.type == EV_KEY && (event.code == BTN_FORWARD || event.code == BTN_BACK) {
    printf("%d %d\n", event.type, event.code);
  }
}

关于c++ - 如何让 C++ 中的 ioctl 只管理我鼠标的 4 个按钮中的 2 个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55134082/

相关文章:

c++ - VC++ 缺少类型说明符 - 假定为 int。注意 : C++ does not support default-int

c++ - Qt 运算符 != 重载

c++ - std::regex 识别多项式方程的系数

linux - 使用 OSX 终端命令计算目录中的文件数

php - Codeigniter - 图片上传适用于本地主机 (WAMP) 但无法在线使用

linux - 为什么linux用户空间和内核空间的代码运行速度会有差异?

c++ - 声明不兼容,初学者 c++

linux - 如何在内核模式(Linux)下从串口读取数据(字符)?

python - fcntl.ioctl 在 Python 2 上总是失败

c++ - 无法通过 CreateFile 打开设备,ERROR_INVALID_FUNCTION