web-dev-qa-db-ja.com

アイドル状態のときにXorgでマウス(タッチパッドではありません!)を無効にします

私は熱心なキーボードユーザーですが、それでも時々マウスが必要です。手の移動を最小限にするために、マウスをキーボードの下に配置しています。 (ちなみに、このようにマウスを使用すると、私の手にとってより自然に感じます。)

現在、マウスを使用していないときにポインタを非表示にするために nclutter を使用しています。残念ながら、入力中に時々それを微調整しているため、ポインタが再び表示されます。これにより、ポインタが別のウィンドウに移動し、現在のウィンドウからフォーカスが外れることがあります。 (私はずさんなフォーカスを使用しており、これを変更することはオプションではありません。)

現在、一定のアイドル時間の後にポインターを非表示にするだけでなく、マウスを完全に無効にする可能性を探しています。マウスボタンをクリックするか、マウスホイールを使用すると、マウスが再び有効になります。

17
igor

最初に実行する必要があるのは、マウスをオフにすることですが、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デーモンを実行して、マウス入力デバイスを監視します

実行中のデーモンは、環境内のinitスクリプトまたはautorunスクリプトとして実現できます。

マウスを自動的にオフにするには、入力デバイス(cat /dev/input/event5)を監視し、入力がない場合はオフにします...

私の短いイントロがあなたのお役に立てば幸いです...;)

16
pbm

"Pointer Capture" Gnomeパネルアプレット を試しましたか?

マウスポインタを画面の領域にロックして、ポインティングデバイスを他のタスクに使用できるようにすることができます。たとえば、この機能により、電動車椅子のユーザーは、1つの電動車椅子ジョイスティックで電動車椅子とマウスポインタの両方を制御できます。

ポインタキャプチャパネルアプレットは、パネル上にそのような領域を作成します。この領域に、ユーザーは、決められた方法で解放されるまでポインタをロックできます。

ポインターキャプチャパネルアプレットは、GNOMEデスクトップメニューバー/システムパネルを右クリックし、[パネルに追加]を選択し、[ポインターキャプチャ]を選択して、[追加]ボタンをクリックすることでインストールできます。

Gnome.orgからの説明が明確でない場合、これはパネルにエリアを作成し、マウスが入る(またはクリックする)と、カーソルは非表示になり、定義されたアクションが発生するまで再表示されません。 2回目のクリック。まさにあなたが必要とするもののように聞こえますか?

1
Josh