
誰もがシステムを台無しにしないようにキーボードとマウスをプログラム的に一時的に「固定」するにはどうすればよいですか?
多くの可能性があり、これは便利です。たとえば、私にはノートパソコンがありますが、私がいない間に誰かがパスワードを知っていたり推測したりしても(妻や子供のように)、誰もラップトップを使用できないようにし、泥棒の食欲を抑えたいと思います。 (不適切に見えるので)。 - 仕事)。または、リモートで作業していますが、コンピュータのユーザーが邪魔にならないことを確認したいと思います。
答え1
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つを最初に無効にするなどの操作を実行します。
答え2
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
答え3
xinputを使用して回答した質問は正確ですが、単純なスクリーンセーバータイプのロックを探している場合は、ここに簡単な質問があります。私はこの記事を90年代に書きましたが、この記事はあなたがパスワードを入力するまでXサーバーのキーボードとマウスイベントを食べるだけでした。正しく入力すると、終了以外のフィードバックはありません。
http://ishiboo.com/~danny/Projects/xl/
画面ロックとして使用しているので、好きな方法で正確に試してみてください。
答え4
あなたの回答は、2番目のユースケース(リモートでの作業の実行)に最も適している可能性がありますが、最初のユースケース(キーボードから離れている)には適していない可能性があります。戻ったときにxinputを再実行してアクセスを復元する方法は?
システムから離れたときにシステムをロックする標準的なソリューションは次のとおりです。XSスクリーンセーバー、ほとんどのディストリビューションにデフォルトでインストールされます。キーボードをロックするように設定されている場合は、ロックを解除する前にパスワードの入力を求められます。