如何将 Ctrl/Shift 映射到鼠标拇指按钮?

如何将 Ctrl/Shift 映射到鼠标拇指按钮?

我有一只 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-mapsudo 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 了:

  1. “首选项”选项卡:附加按钮 -> 添加 -> 单选按钮“即时手势” -> 单击灰色区域中的鼠标按钮(对我来说,“后退,拇指按钮”变成了“(即时)按钮 20”)
  2. 首选项选项卡:选择“自动启动 Easystroke”
  3. 操作选项卡:添加操作
     名称:任何你喜欢的名称(例如“鼠标 20 -> Ctrl”)
     类型:“忽略”
     详细信息:单击一次将“忽略”更改为“组合键...”。然后按 Ctrl + a。“a”无关紧要,将被忽略。“组合键”将被替换为“Ctr”
  4. 选择/突出显示新操作 -> 单击“记录笔划”-> 再次按下要使用的鼠标按钮(这为我在“笔划”列中出现了“20 -> 20”)
  5. 现在,按住鼠标按钮会在屏幕上显示一个小“Ctr”,并且只要鼠标按钮处于活动状态,就表示一直按住该按钮。

相关内容