![如何将 Ctrl/Shift 映射到鼠标拇指按钮?](https://linux22.com/image/806093/%E5%A6%82%E4%BD%95%E5%B0%86%20Ctrl%2FShift%20%E6%98%A0%E5%B0%84%E5%88%B0%E9%BC%A0%E6%A0%87%E6%8B%87%E6%8C%87%E6%8C%89%E9%92%AE%EF%BC%9F.png)
我有一只 Microsoft Sidewinder X8 鼠标,我想使用和8。有人能告诉我怎么做吗?Shift9Control
答案1
安装 xdotool 和 xbindkeys
sudo apt-get install xdotools xbindkeys
然后将以下代码复制到 ~/.xbindkeysrc 中
"xdotool keydown shift"
b:9
"xdotool keyup shift"
release + shift + b:9
"xdotool keydown ctrl"
b:8
"xdotool keyup ctrl"
release + control + b:8
其中 b:x 是按钮的编号,您可以使用 xev 找到它。由于我不希望每次需要时此绑定都是永久的,因此我启动一个终端并输入xbindkeys -n
。当我不再需要它时,我只需关闭终端即可。
答案2
首先安装xdotool
sudo aptitude install xdotool
然后,您可以创建一个脚本来模拟Ctrl按键。打开 gedit 并复制粘贴以下内容:
#! /bin/bash
xdotool keydown ctrl
while [MOUSEKEYDOWN == 1]; do #TODO change the while test.
sleep 30
#decrease sleep if script doesn't react fast enough on releasing the key,
#increase sleep if the computer uses to many CPU when pressing the button.
done
xdotool keyup ctrl # Lift the key back up after no button is pressed.
我不是一个优秀的 bash 程序员。我需要寻找一种方法来识别你的按钮是否被按下,我可能会犯(不止一个)语法错误,但我想 bash 程序员明白我的意思。
如果有人修复了脚本,请将其保存在 ctrl.sh 下并使其可执行
chmod +x ctrl.sh
然后,正如 nathwill 所说,转到系统 -> 偏好设置 -> 键盘。添加自定义命令,选择添加 ~/ctrl.sh 命令并按下鼠标按钮作为快捷键。
这应该可以。
答案3
http://linux.derkeiler.com/Newsgroups/comp.os.linux.x/2003-07/0010.html解释如何使用绑定键和宏播(来自 xmacro 包)。这两个应用程序都可以从 Ubuntu 存储库获得。
以下是来自网站的一个示例,解释了如何将鼠标按钮 6 映射到Alt+Left key组合。
将其放入 中
~/.xbindkeysrc
,然后按下鼠标按钮 6 将会将Alt+Left key组合回显到 X 服务器,该组合映射到 Konqueror 和 Mozilla 中的“返回”:
"echo -e 'KeyStrPress Alt_L\nKeyStrPress Left\nKeyStrRelease Left\n KeyStrRelease Alt_L' | xmacroplay &"
b:6
有 Shift_L 和 Control_L(如果您喜欢右键而不是左键,还有 Shift_R 和 Control_R)。只需将这些键替换到上面的命令中,将 b:6 更改为要映射到该键的实际鼠标按钮,然后将命令输入~/.xbindkeysrc
,一切就绪了。
答案4
有一个重复的问题:将 Ctrl 和 Alt 映射到鼠标拇指按钮
以下是该问题的答案副本,使用Easystroke
:
我找到了一个可行的解决方案这里. 它使用 Easystroke ( sudo apt install easystroke
)。向来自 ubuntuforums 的 @stuartr 表示感谢!
但有一个问题 - 重新映射的鼠标点击偶尔会触发原始事件(在我的情况下为“返回”) 。为了避免这种情况,可以使用xinput set-button-map
(sudo apt install xinput
)将鼠标按钮重新映射到一些未使用的数字。我把它放进了我的.xsessionrc
(取自这个答案来自@Maxim):
mi_mouse_id=$(xinput | grep 'GTech MI wireless mouse.*pointer' | sed 's/.*\tid=\([0-9]*\)\t.*/\1/')
xinput set-button-map $mi_mouse_id 1 2 3 4 5 6 7 20 9 10 11 12 13 14 15 16 17 18 19 20
这将鼠标按钮 8 映射到按钮 20。希望按钮 20 没有任何意义。至少对我来说完全没有影响。现在是时候将按钮 20 重新映射到 Ctrl 了:
- “首选项”选项卡:附加按钮 -> 添加 -> 单选按钮“即时手势” -> 单击灰色区域中的鼠标按钮(对我来说,“后退,拇指按钮”变成了“(即时)按钮 20”)
- 首选项选项卡:选择“自动启动 Easystroke”
- 操作选项卡:添加操作
名称:任何你喜欢的名称(例如“鼠标 20 -> Ctrl”)
类型:“忽略”
详细信息:单击一次将“忽略”更改为“组合键...”。然后按 Ctrl + a。“a”无关紧要,将被忽略。“组合键”将被替换为“Ctr” - 选择/突出显示新操作 -> 单击“记录笔划”-> 再次按下要使用的鼠标按钮(这为我在“笔划”列中出现了“20 -> 20”)
- 现在,按住鼠标按钮会在屏幕上显示一个小“Ctr”,并且只要鼠标按钮处于活动状态,就表示一直按住该按钮。