麒麟os中鼠标侧键失效需分三层解决:xinput临时映射、xbindkeys+xdotool绑定组合键、udev规则底层重定向,分别适用于快速验证、复杂操作和全局低延迟场景。

如果您在麒麟OS中使用带侧键的鼠标(如前进/后退键),却发现点击毫无反应或触发了不符合预期的操作,说明系统未识别侧键事件或未配置对应功能映射。这通常发生在Logitech、Razer等品牌通用USB鼠标接入后,UKUI桌面默认不处理XButton4/XButton5事件。
用xinput命令临时映射侧键
该方法直接作用于X11输入设备层,修改后立即生效,适合快速验证侧键是否被识别,也便于写入启动脚本固化。但每次重启或重新插拔鼠标后需重执行。
打开终端,运行:xinput list,在输出中查找含“Mouse”“Logitech”或“Side”的设备行,记下完整设备名称(例如 【Logitech USB Receiver】)。
执行:xinput get-button-map "Logitech USB Receiver",观察返回值,典型输出为 1 2 3 4 5 6 7 8 9 —— 其中第4位是侧键1(前进),第5位是侧键2(后退)。若此处显示为0或远超9的数字,说明驱动未正确上报该按钮。
将侧键4映射为浏览器后退,侧键5映射为前进:执行 xinput set-button-map "Logitech USB Receiver" 1 2 3 8 9 6 7 8 9(这里用8=KEY_LEFT、9=KEY_RIGHT模拟;实际需先用xev校验键码,【错误键码会导致侧键失灵】)。
测试:在Firefox或Chrome中打开多个标签页,按压鼠标侧键,确认能否切换历史页面。
用xbindkeys+xdotool模拟组合键
当xinput无法直接映射虚拟键码(如Ctrl+T新建标签),或需绑定复杂操作时,此方案更可靠。它不依赖硬件键码定义,而是监听原始按钮事件并注入键盘指令。
方法一:安装依赖
执行:sudo apt install xbindkeys xdotool。
方法二:生成并编辑配置文件
运行:xbindkeys --defaults > ~/.xbindkeysrc,再执行:nano ~/.xbindkeysrc,在文件末尾添加:
"xdotool key Ctrl + t"<br>b:4
"xdotool key Alt + Left"<br>b:5
保存退出后,执行:pkill xbindkeys && xbindkeys 启动服务。此时侧键4将新建浏览器标签页,侧键5返回上一页。
注意:xdotool命令中的空格必须保留,Ctrl + t不能写成Ctrl+t,否则无效。
通过udev规则实现底层事件重定向
此方式绕过X11,直接在内核输入子系统拦截和重写事件,适合需要全局生效、低延迟且对Electron类应用兼容性要求高的场景。操作涉及C/Python编程与系统级配置,仅推荐有Linux设备管理经验的用户采用。
第一步:确认侧键event code
执行:sudo evtest,选择对应鼠标设备编号,按压侧键,记录输出中类似 Event: time ..., type 0x01 (EV_KEY), code 0x110 (BTN_SIDE), value 1 的行——其中 【0x110 即 BTN_SIDE,对应十六进制 event code 272】。
第二步:创建udev规则文件
执行:sudo nano /etc/udev/rules.d/99-mouse-xbutton.rules,写入:
SUBSYSTEM=="input", ATTRS{name}=="*Mouse*", KERNEL=="event*", SYMLINK+="mouse-xbutton"
第三步:编写事件转发程序(以Python-evdev为例)
安装:sudo apt install python3-evdev;创建脚本 /usr/local/bin/mouse-side-remap.py,内容需读取 /dev/input/mouse-xbutton,检测BTN_SIDE事件后向uinput设备注入KEY_LEFTCTRL+KEY_T等合成事件。
第四步:设置开机自启
执行:sudo systemctl enable mouse-side-remap.service(需先编写对应service文件)。











