Answers:
假设您的GUI基于X(几乎所有UNIX GUI都是),请使用xinput
。
首先,列出您的设备:
$ xinput --list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Windows mouse id=6 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Windows keyboard id=7 [slave keyboard (3)]
列出鼠标的详细信息(在我们的示例中,id = 6):
$ xinput --list-props 6
Device 'Windows mouse':
Device Enabled (112): 1
Coordinate Transformation Matrix (114): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (222): 0
Device Accel Constant Deceleration (223): 1.000000
Device Accel Adaptive Deceleration (224): 1.000000
Device Accel Velocity Scaling (225): 10.000000
现在禁用它:
$ export DISPLAY=:0
$ xinput set-int-prop 6 "Device Enabled" 8 0
要启用它,请执行以下操作:
$ xinput set-int-prop 6 "Device Enabled" 8 1
键盘也一样,只需将int-prop数字替换为正确的ID。
测试并在Cygwin上工作。
当然,您必须事先计划如何重新启用设备。例如在cron上安排它,远程重新启用它,或者首先禁用其中之一。
xinput set-int-prop 9 "Device Enabled" 8 0
-仅,1)我也希望隐藏鼠标指针,以及2)如果我从X转到tty(Linux控制台/ VT),并且然后返回X,将其重置(xinput list-props 9
确认)。
xinput --set-int-prop
不推荐使用。您应该--set-prop
改用。此外,xinput --enable [device]
和xinput --disable [device]
可以分别用于启用和禁用设备。
这是我用来启用,禁用和切换笔记本电脑触摸板的Shell脚本:
#!/bin/bash
# Enables, disables, or toggles device
device='AlpsPS/2 ALPS GlidePoint'
if [[ $1 == -e ]] ; then
# Enable
#xinput --set-prop "$device" "Device Enabled" 1
xinput --enable "$device"
elif [[ $1 == -d ]] ; then
# Disable
#xinput --set-prop "$device" "Device Enabled" 0
xinput --disable "$device"
elif [[ $1 == -t ]] ; then
# Toggle
if [[ $(xinput list-props "$device" |
grep "Device Enabled") == *:*1 ]] ; then
#xinput --set-prop "$device" "Device Enabled" 0
xinput --disable "$device"
else
#xinput --set-prop "$device" "Device Enabled" 1
xinput --enable "$device"
fi
else
echo "usage: $0 [-edt]"
fi
xinput --disable 9
。
使用xinput回答的问题是正确的,但是如果您只是寻找一个简单的屏幕保护程序类型锁,那么这里是一个快速的问题。我是在90年代写的,它所做的就是吃掉X服务器的键盘和鼠标事件,直到您键入密码。正确输入后,除了退出外没有其他任何反馈。
http://ishiboo.com/~danny/Projects/xl/
我将其用作屏幕锁,正是您要使用的方式。
您的答案可能最适合您的第二个用例(远程执行操作),但可能不适合您的第一个用例(远离键盘)。返回时如何再次运行xinput以恢复访问?
XScreenSaver是锁定系统的标准解决方案,它已在大多数发行版中默认安装。如果配置为锁定键盘,它将在解锁之前提示您输入密码。
至少在基于Debian的系统(如Ubuntu)上,有一个实用程序xtrlock (1)
可通过软件包存储库调用。
该实用程序将锁定键盘和鼠标,直到输入密码并保持窗口可见为止。我发现它对于运行信息显示等的计算机很有用。
我在上面的答案的帮助下(使用.zshrc
,但也应该使用.bashrc
)编写了此代码。要使用键盘进行相应操作,请更改中的参数grep Mouse
。
setmouse () {
xinput \
$1 \
`xinput | grep Mouse | tr -d " " | tr "\t" " " | cut -d" " -f2 | cut -d"=" -f2`
}
offmouse () { setmouse disable }
onmouse () { setmouse enable }