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


17

私は熱心なキーボードユーザーですが、時々マウスが必要です。手の移動を最小限に抑えるために、キーボードの下にマウスがあります。(補足として、この方法でマウスを使用すると、私の手にとってより自然に感じられます。)

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

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

回答:


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デーモンを実行して、マウス入力デバイスを監視します

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

マウスを自動的にオフにするために、入力デバイス(cat /dev/input/event5)を監視し、入力がないときにオフにすることができます...

私の短いイントロがあなたに役立つことを願っています...;)


ヒントをありがとうactkbd!質問を投稿した後、私はすでにを使用することを考え出していましたがxinput、マウスボタンを押してマウスを再度有効にする方法がわかりませんでした。
イゴール

これは非常によく書かれた答えです。
pjc50

その情報、特にatkkbd

「Device Enabled / Disabled」プロパティと一緒に--set-propオプションを使用する代わりに、xenable --enable [device]やxinput --disable [device]などの--enableオプションと--disableオプションも使用できます。 。
thebodzio

1

「ポインターキャプチャ」Gnomeパネルアプレットを試しましたか?

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

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

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

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


これを使用しましたが、いくつかの問題が発生しました。Alt + F1アプリケーションメニューで開くことができませんでした。何が原因かわかりません。私はubuntuユーザーです。
バルキ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.