如何在c ++中使用ioctl来管理我的鼠标中的4个按钮中的2个?

问题描述 投票:1回答: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++ linux ioctl
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);
  }
}

0
投票

通过在按钮映射中包含2个按钮来解决xinput,如下所示:

xinput set-button-map $NAGAID2 1 2 3 4 5 6 7 11 10 8 9 13 14 15 275 276
© www.soinside.com 2019 - 2024. All rights reserved.