c++ - 如何让 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 个前进和后退按钮,而不是点击。
解决方案
您必须过滤代码中的事件。例如像下面
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);
}
}
推荐阅读
- android - 如何将 android MediaRecorder 输出转换为 MP3 文件
- ios - 如何仅在较小的设备上隐藏状态栏?
- c++ - Marshal 管理非托管的无符号整数数组
- java - 在 PrintWriter 格式错误中使用 PrintStream
- reactjs - 在 Docker 中使用 React 和 Nginx 授权 Spotify
- kubernetes - Kubernetes 检查“静默” pod 是否完成执行
- typescript - 在 TypeScript 中手动 curry 一个 add 函数
- here-api - 我如何从带有输入搜索的表单中获取 searchText 映射 javascript
- bluetooth-lowenergy - 在描述符中结合键盘和消费者控制
- microsoft-graph-api - 无需授权完全读取权限即可获取忙/闲信息