回答:
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でスケジュールする、リモートで再度有効にする、最初の1つだけを無効にするなどです。
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]
それぞれのデバイスを有効または無効に使用することができます。
これは、ラップトップのタッチパッドを有効化、無効化、および切り替えるために使用するシェルスクリプトです。
#!/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/
私はそれをスクリーンロックとして使用します。
おそらく、2番目のユースケース(リモートで何かをする)に最適な答えですが、最初の(キーボードから離れている)場合にはおそらくそうではありません。戻ったときにアクセスを復元するためにxinputを再度実行するにはどうしますか?
システムをロックしている間にシステムをロックする標準的なソリューションは、ほとんどのディストリビューションでデフォルトでインストールされるXScreenSaverです。キーボードをロックするように構成されている場合、ロックを解除する前にパスワードの入力を求められます。
少なくともUbuntuなどのDebianベースのシステムでは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 }