我不喜欢粘贴鼠标中键,因为我经常在Eclipse中遇到无法编译的代码。如何关闭此功能(在所有程序中)?我正在运行Fedora。
我不喜欢粘贴鼠标中键,因为我经常在Eclipse中遇到无法编译的代码。如何关闭此功能(在所有程序中)?我正在运行Fedora。
Answers:
该解决方案将在全球范围内工作并保留鼠标中键的功能。
安装 xbindkeys xsel xdotool
放在这里 ~/.xbindkeysrc
"echo -n | xsel -n -i; pkill xbindkeys; xdotool click 2; xbindkeys"
b:2 + Release
重装 xbindkeys -p
xbindkeys
在启动时运行,pkill xbindkeys
以停止。
在Fedora 24中,您可以gnome-tweak-tool
使用以下命令进行安装:
$ sudo dnf install gnome-tweak-tool
打开gnome-tweak-tool
并转到“键盘和鼠标”选项卡,然后禁用“单击鼠标中键粘贴”。
粘贴中间按钮是Unix用户界面的标准,例如选择或激活左边的按钮,以及右边的按钮执行其他操作(例如扩展,切换,启动菜单等)。您会发现它必须粘贴到大多数UNIX应用程序中。
如果您的问题是将手指放在方向盘上时鼠标过于敏感,建议您使用更好的鼠标。有很多便宜的体面的老鼠。
您可以将鼠标按钮2重新分配给另一个数字。应用程序将鼠标左键,鼠标中键和鼠标右键分别标识为按钮1、2和3。将此代码放在X会话启动时执行的脚本中(如何执行取决于您的桌面环境)。
echo 'pointer = 1 6 3 4 5' | xmodmap -
按下滚轮时,滚轮鼠标支持中键单击事件。这是一个很棒的功能,但是您可能会发现它很烦人。幸运的是,可以将其禁用。
首先,您需要知道鼠标的ID,如下所示:
$ xinput list | grep 'id='
打印类似
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ PixArt Dell MS116 USB Optical Mouse id=12 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
Virtual core XTEST keyboard id=5 [slave keyboard (3)]
Power Button id=6 [slave keyboard (3)]
Video Bus id=7 [slave keyboard (3)]
Power Button id=8 [slave keyboard (3)]
Sleep Button id=9 [slave keyboard (3)]
Dell KB216 Wired Keyboard id=10 [slave keyboard (3)]
Dell KB216 Wired Keyboard id=11 [slave keyboard (3)]
Eee PC WMI hotkeys id=13 [slave keyboard (3)]
我的Dell Usb鼠标已在此处打印,其id = 12
因此,我可以像下面这样查看我的鼠标按钮映射:
$ xinput get-button-map 12
哪个打印
1 2 3 4 5 6 7 8 9 10 11 12
这里只有前三个数字对我有意义。它们代表鼠标左键,鼠标中键和鼠标右键。
我可以通过将其设置为0来关闭鼠标中键:
$ xinput set-button-map 12 1 0 3
或者,我可以通过将其设置为1来将鼠标中键变成鼠标左键:
$ xinput set-button-map 12 1 1 3
它对我有用(kubuntu 18.04 LTS)
xinput set-button-map 12 1 0 3
您设置了所有按钮(本例中为1-12 xinput set-button-map 12 1 0 3 4 5 6 7 8 9 10 11 12
)
如果您要保持中键功能(例如单击以打开新选项卡中的链接)而不粘贴内容,可以执行以下操作。
首先安装sxhkd和xsel。
然后像这样配置./.config/.sxhkd/sxhkdrc
~button2
echo -n | xsel -n -i
~control + c
echo -n | xsel -n -i
~control + shift + c
echo -n | xsel -n -i
~control + x
echo -n | xsel -n -i
基本上就是这样。
现在启动sxhkd(或将其配置为在启动时启动)。现在,鼠标中键将不再粘贴任何东西,但将正常运行。
~/.config/sxhkd/sxhkdrc
编辑:我刚刚发现我发布的解决方案有问题:在某些程序中(gitk
至少不确定它是多么普遍),这将阻止文本选择工作。可以尝试一下,但是如果您在经常使用的程序中选择文本时遇到问题,那么解决方案就是停止使用它。
安装xsel
,然后运行以下shell脚本:
#!/bin/sh
while true; do
xsel -fin </dev/null
done
只要该脚本正在运行(您可以将其设置为登录时运行),鼠标中键就不会粘贴到任何应用程序中。因此,从技术上讲,它仍然会粘贴,但始终不会粘贴任何内容。
它的工作方式是运行xsel
并复制(-i
)的内容/dev/null
,而不会分叉到后台(-n
),并且实际上将空字符串保存在缓冲区中,而不仅仅是清除它并退出(-f
)。每次退出时,它将xsel
使用相同的选项再次调用。由于xsel
它将一直运行,直到另一个程序通过复制其他内容来“减轻工作量”,因此它将不会不断创建新进程,而是保持单个进程精确运行直到再次需要它为止。(除非您正在运行脚本的多个实例,但是没有必要这样做。)
同样也不会,这不会影响常规的复制/粘贴,因为单击鼠标中键使用的是单独的剪贴板。
这是我的剧本。您可能需要调整
#!/bin/bash
clear
echo
echo
echo
echo -----Now fixing your scroll button --- -hold onto pants
echo
xinput --list|grep "Virtual core XTEST pointer"
echo ---------------------------------------------------------------------------------
echo
id=$(
xinput --list|grep "Virtual core XTEST pointer" |awk '{
for(i=1; i<=NF; i++) {
tmp=match($i, /id=[0-9]+/)
if(tmp) {
print $i
}
}
}' $1 | tr -d '[:alpha:]='
)
echo fixing $id:
xinput set-button-map $id 1 10 2 4 5 6 7 8 9 3
echo
echo
xinput get-button-map $id
echo ---------------------------------------------------------------------------------