首页 > 解决方案 > 如何让 c++ 中的 ioctl 只管理鼠标的 4 个按钮中的 2 个?

问题描述

这是代码的一部分:

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 个前进和后退按钮,而不是点击。

标签: c++linuxioctl

解决方案


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

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);
  }
}

推荐阅读