重新映射Microsoft Sculpt Comfort鼠标上的侧面触摸按钮


12

我最近购买了Microsoft Sculpt Comfort鼠标。它使用蓝牙连接到我的笔记本电脑,所有常规鼠标按钮在Linux和Windows 7下均能正常工作。但是,此鼠标的不同之处在于,它的侧面有一个特殊的Windows/ Super键,当按下该键时,它会启动启动/菜单。它还具有触摸传感器,该传感器检测何时向上或向下按下侧面按钮,并振动鼠标以确认其已被激活。

当然,在Windows中,有一个程序可以让我更改笔触并关闭振动。

在Linux中,当按下或轻击侧面按钮时,xev仅检测到正常的击键。Xev不报告任何鼠标按键按下情况。

所以我的问题是,在Linux下,我可以更改发送哪些按键吗?

我很想改变的关键,从结合tabdownbackspaceup,(什么xev的报告)到ctrl+ alt+ left/ right工作区之间切换。

谢谢你的帮助!



1
感谢ubfan1的技巧,xinput get-button-map给了我13个按钮。xev和xinput测试报告仅按钮1-7。我尝试使用xinput set-button-map和链接中的 xbindkeys重新映射按钮8-13,但未做任何更改。按下侧面键报告键按下133(超级),向上滑动报告键按下22(退格),向下滑动报告键按下23(选项卡)。
user223544

Answers:


5

我自己买了一个,发现以下内容非常适合我。

  1. 打开dconf-editor(sudo apt-get install dconf-editor如果尚未安装)。
  2. 导航到org-> gnome->桌面-> wm->绑定。
  3. switch-to-workspace-down的值更改为

    ['<Control><Alt>Down', '<Primary><Super>Tab', '<Control><Super>Tab']

    和的值切换至工作区向上

    ['<Control><Alt>Up', '<Primary><Super>BackSpace', '<Control><Super>Backspace']


这个解决方案比我在xbindkeys中找到的解决方案更可靠。与xbindkeys相比,唯一的缺点是xbindkeys解决方案似乎仅捕获鼠标键事件,而如果使用键盘键,则该解决方案也将起作用。无论如何,此解决方案的可靠性使其成为更好的解决方案。
user223544 2014年

2

因此,由于Microsoft Sculpt Comfort Mouse并未为超级手势和滑动手势注册鼠标按键,而是注册了键盘按键,因此我使用了“ xautomation”和“ xbindkeys”包来监听这些按键并发送Ctrl+ Alt+ Right/ Left在工作空间之间切换。这不是一个理想的解决方案,但它的工作原理是十分之八。

#Move to left workspace
"xte 'keydown Control_L' 'keydown Alt_L' 'usleep 100' 'key Left' 'keyup Control_L' 'keyup Alt_L' 'keyup Left'"
   m:0x4+mod4+m:0x0+c:23
   #Control_L+Super_L+Tab

#Move to right workspace
"xte 'keydown Control_L' 'keydown Alt_L' 'usleep 100' 'key Right' 'keyup Control_L' 'keyup Alt_L' 'keyup Right'"
   m:0x4+mod4+m:0x0+c:22
   #Control_L+Super_L+Backspace

该xbindkeys脚本的作用是侦听鼠标向上滑动和向下滑动手势发送到计算机的按键。如果检测到,xautomation将发送标准移动桌面按键control+ alt+ left/ right

鼠标向上滑动手势会发送left control+ left super+ 的击键backspace。鼠标向下滑动手势可发送击键left control+ left super+ tab。m:0x4 + mod4 + m:0x0 + c22是xbindkeys检测到的实际按键代码组合。

我将对其进行更多处理,以查看是否可以提高效率,但是现在可以完成工作。我只是希望tabbackspace鼠标输出不会影响我正在进行的任何工作。


1
您能解释一下该解决方案的工作原理吗?鼠标是否正在发送Control_L+Super_L+Tab(Control_L + Super_L来自哪里)?还是将鼠标按钮与m:0x4+mod4+m:0x0+c:23(您似乎说问题中没有鼠标事件)匹配?
Volker Siegel 2014年

我编辑了解决方案以解释Control_L + Super_L的来源。我还解释了m:0x0 + mod4 + m:0x0 + c:23的目的。
user223544 2014年

0

我想映射相同的按钮以双向浏览Firefox中的选项卡。我正在使用xbindkeys和xmacro。运行良好!

.xbindkeysrc

#Thumb down
"echo 'KeyStrPress Control_L KeyStrPress Tab KeyStrRelease Control_L KeyStrRelease Tab'|xmacroplay :0"
   Control+Mod4+Tab

#Thumb up
"echo 'KeyStrPress Control_L KeyStrPress Shift_L KeyStrPress ISO_Left_Tab KeyStrRelease Control_L KeyStrRelease Shift_L KeyStrRelease ISO_Left_Tab' |xmacroplay :0"
   Control+Mod4+BackSpace
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.