闲置时在Xorg中禁用鼠标(非触摸板!)


17

我是一个狂热的键盘用户,但是我仍然时不时需要鼠标。为了最大程度地减少手的行程,我将鼠标放在键盘下方。(在旁注中,以这种方式使用鼠标对我的手来说更自然。)

我目前正在使用整洁的方式隐藏指针,而不使用鼠标。不幸的是,我有时在键入时会轻按它,这会导致指针重新出现。有时这会将指针移到另一个窗口上,这又将焦点从当前窗口移开。(我使用的是草率的焦点,因此不能更改此选项。)

我现在正在寻找一种可能性,不仅可以在一定的空闲时间后隐藏指针,而且可以完全禁用鼠标。单击任何鼠标按钮或使用鼠标滚轮,然后应重新启用鼠标。

Answers:


16

我们需要完成的第一件事是关闭鼠标,但只能在X中。为此,我们可以使用xinput

我们需要发现连接到计算机(连接到X服务器)的输入设备:

pbm@tauri ~ $ xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ A4Tech USB Mouse                          id=10   [slave  pointer  (2)]
⎜   ↳ Macintosh mouse button emulation          id=11   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
     [...]

设备,我们需要使用的是A4Tech USB Mouseid=10。接下来,我们需要检查该设备的属性:

pbm@tauri ~ $ xinput list-props "A4Tech USB Mouse"
Device 'A4Tech USB Mouse':
       Device Enabled (121):   1
       [....]

要关闭设备,我们需要更改属性Device Enabled

xinput set-prop DEV PROP STATE
xinput set-prop "A4Tech USB Mouse" "Device Enabled" 0

打开它:

xinput set-prop "A4Tech USB Mouse" "Device Enabled" 1

接下来的事情是自动执行...;)在此示例中,我们将通过键盘快捷键禁用鼠标,然后通过按鼠标左键和右键将其启用。

为此,我们可以使用actkbd-在X服务器外部运行的键盘(但不仅限于)快捷方式守护程序。

首先,我们需要为actkbd:创建一个空的配置文件touch /etc/actkbd.conf。下一步是发现连接到计算机的设备:

pbm@tauri ~ $ cat /proc/bus/input/devices 
I: Bus=0003 Vendor=046d Product=c312 Version=0110
N: Name="BTC USB Multimedia Keyboard"
P: Phys=usb-0000:00:1d.0-1.6/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.6/2-1.6:1.0/input/input6
U: Uniq=
H: Handlers=kbd event3 
B: EV=120013
B: KEY=1000000000007 ff9f207ac14057ff febeffdfffefffff fffffffffffffffe
B: MSC=10
B: LED=7

I: Bus=0003 Vendor=09da Product=000a Version=0110
N: Name="A4Tech USB Mouse"
P: Phys=usb-0000:00:1d.0-1.5/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1.5:1.0/input/input8
U: Uniq=
H: Handlers=mouse1 event5 
B: EV=17
B: KEY=ff0000 0 0 0 0
B: REL=343
B: MSC=10

[...]

在这一部分中,最有趣的是键盘和鼠标设备的名称和处理程序。

首先,我们处理通过键盘快捷键关闭鼠标的操作,因此我们需要发现键ID:

pbm@tauri ~ $ sudo actkbd -s -d /dev/input/event3
Keys: 29+41+42 //we need to press keys that will turn off mouse, 29+41+42 is Ctrl + Shift + `

当我们知道密钥ID是什么时,我们需要将其放入配置文件(/etc/actkbd.conf):

29+41+42:::sudo -u pbm DISPLAY=:0 xinput set-prop "A4Tech USB Mouse" "Device Enabled" 0

要测试它,我们需要actkbd在守护程序模式下运行:

pbm@tauri ~ $ sudo actkbd -d /dev/input/event3 -D

以同样的方式,我们需要处理“打开”事件:

  1. 检查鼠标设备的处理程序
  2. 使用来检查鼠标左键和右键的键代码 actkbd
  3. 放到 actkbd.conf
  4. 运行actkbd守护程序以监视鼠标输入设备

运行的守护程序可以在环境中实现为初始化脚本或自动运行脚本。

要自动关闭鼠标,我们可以监视输入设备(cat /dev/input/event5)并在没有输入时将其关闭...

希望我的简短介绍对您有所帮助...;)


感谢您的提示actkbd!发布问题后,我已经想出了要使用的功能xinput,但是我没有发现如何通过按下鼠标按钮来重新启用鼠标。
igor 2010年

这是一个很好的书面答案。
pjc50 2011年

感谢您提供的信息,尤其是atkkbd的提示

除了使用--set-prop选项和“ Device Enabled / Disabled”(设备已启用/禁用)属性,还可以使用--enable和--disable选项,例如xinput --enable [device]和xinput --disable [device] 。
thebodzio

1

您是否尝试过“ Pointer Capture” Gnome面板小程序

鼠标指针可以锁定在屏幕区域中,因此指针设备可以自由执行其他任务。例如,此功能允许Powerchair用户使用单个Powerchair操纵杆来控制Powerchair和鼠标指针

Pointer Capture面板小程序会在面板上创建一个这样的区域,用户可以在其中锁定指针,直到以确定的方式释放指针为止。

可以通过右键单击GNOME桌面菜单栏/系统面板,选择“添加到面板”,选择“指针捕获”并单击“添加”按钮来安装“指针捕获”面板小程序。

如果不清楚gnome.org的描述,这将在面板中创建一个区域,当鼠标进入(或您单击鼠标)时,光标将消失并且直到定义的动作发生时才会重新出现,例如第二次点击。听起来正是您所需要的?


我已经用过,但是造成了一些问题。我无法使用Alt + F1按应用程序菜单打开。我不知道是什么原因造成的。我是Ubuntu用户。
2011年
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.