web-dev-qa-db-ja.com

タッチパッドを維持するが、ボタンを無効にしたい方法

私の子供のエイサーv5の右ボタンが壊れています。牛乳に濡れて、いきなり圧迫されたように見えます。

タッチパッドでのみ機能するようにボタンを完全に非アクティブにするにはどうすればよいですか?

KDEを搭載したOpenSUSE13.1を使用しています。

6
maniat1k

ほとんどのタッチパッドは、コマンドラインツールsynclientおよびxinputで操作できます。これらのコマンドラインツールの詳細については、ArchLinuxwikiをご覧ください。

2つのツールのうち、synclientを使用してuttonを無効にできるとは思いません。 xinputを使用してこれを行うことができる場合があります。 2つのツールのうち、これは使用するのが面倒ですが、それほど難しくはありません。

-hスイッチを使用して実行すると、次の使用法情報が得られます。

$ xinput -h
usage :
    xinput get-feedbacks <device name>
    xinput set-ptr-feedback <device name> <threshold> <num> <denom>
    xinput set-integer-feedback <device name> <feedback id> <value>
    xinput get-button-map <device name>
    xinput set-button-map <device name> <map button 1> [<map button 2> [...]]
    xinput set-pointer <device name> [<x index> <y index>]
    xinput set-mode <device name> ABSOLUTE|RELATIVE
    xinput list [--short || --long || --name-only || --id-only] [<device name>...]
    xinput query-state <device name>
    xinput test [-proximity] <device name>
    xinput create-master <id> [<sendCore (dflt:1)>] [<enable (dflt:1)>]
    xinput remove-master <id> [Floating|AttachToMaster (dflt:Floating)] [<returnPointer>] [<returnKeyboard>]
    xinput reattach <id> <master>
    xinput float <id>
    xinput set-cp <window> <device>
    xinput test-xi2 <device>
    xinput map-to-output <device> <output name>
    xinput list-props <device> [<device> ...]
    xinput set-int-prop <device> <property> <format (8, 16, 32)> <val> [<val> ...]
    xinput set-float-prop <device> <property> <val> [<val> ...]
    xinput set-atom-prop <device> <property> <val> [<val> ...]
    xinput watch-props <device>
    xinput delete-prop <device> <property>
    xinput set-prop <device> [--type=atom|float|int] [--format=8|16|32] <property> <val> [<val> ...]
    xinput disable <device>
    xinput enable <device>

名前に「ボタン」というテキストが含まれているオプションから始めます。

$ xinput -h 2>&1 | grep button
    xinput get-button-map <device name>
    xinput set-button-map <device name> <map button 1> [<map button 2> [...]]

クエリを実行するには、デバイスの名前が必要です。そのためには、xinput listを使用します。

$ xinput list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech Unifying Device. Wireless PID:4013   id=9    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=11   [slave  pointer  (2)]
⎜   ↳ TPPS/2 IBM TrackPoint                     id=12   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Sleep Button                              id=8    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=10   [slave  keyboard (3)]
    ↳ ThinkPad Extra Buttons                    id=13   [slave  keyboard (3)]

これは通常、このデバイスが処理する「SynPS/2 Synaptics TouchPad」ですが、特定のハードウェアによって異なる場合があります。

$ xinput get-button-map "SynPS/2 Synaptics TouchPad"
1 2 3 4 5 6 7 8 9 10 11 12 

これらはすべて、ThinkpadT410ラップトップのタッチパッドに指定されている「ボタン」です​​。タッチパッドの角なども「ボタン」と見なされます。そのため、上記の出力には非常に多くの情報が含まれています。 --longスイッチを使用すると、上記のリストでどのボタンがどの番号であるかを確認できます。

$ xinput list --long "SynPS/2 Synaptics TouchPad" 
...
⎜   ↳ SynPS/2 Synaptics TouchPad                id=11   [slave  pointer  (2)]
    Reporting 8 classes:
        Class originated from: 11. Type: XIButtonClass
        Buttons supported: 12
        Button labels: "Button Left" "Button Middle" "Button Right" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right" None None None None None
        Button state:
        Class originated from: 11. Type: XIValuatorClass
        Detail for Valuator 0:
          Label: Rel X
          Range: 1472.000000 - 5888.000000
          Resolution: 75000 units/m
          Mode: relative
        Class originated from: 11. Type: XIValuatorClass
        Detail for Valuator 1:
          Label: Rel Y
          Range: 1408.000000 - 4820.000000
          Resolution: 105000 units/m
          Mode: relative
        Class originated from: 11. Type: XIValuatorClass
        Detail for Valuator 2:
          Label: Rel Horiz Scroll
          Range: 0.000000 - -1.000000
          Resolution: 0 units/m
          Mode: relative
        Class originated from: 11. Type: XIValuatorClass
        Detail for Valuator 3:
          Label: Rel Vert Scroll
          Range: 0.000000 - -1.000000
          Resolution: 0 units/m
          Mode: relative
    ...

それは素晴らしいことですが、ボタンを無効にするにはどうすればよいですか?

xinputのマニュアルページを見ると、次の手がかりがわかります。

$ man xinput
...
   --set-button-map device map_button_1 [map_button_2 [...]]
        Change the button mapping of device. The buttons are specified 
        in physical order (starting with button 1) and  are  mapped  to
        the logical button provided. 0 disables a button. The default 
        button mapping for a device is 1 2 3 4 5 6 etc.
...

したがって、xinput list --long "SynPS/2 Synaptics TouchPad"を使用して無効にするボタンをメモしておくと、ボタン#5を無効にする場合は、次のようにできます。

$ xinput set-button-map "SynPS/2 Synaptics TouchPad" 1 2 3 4 0 6 7 8 9 10 11 12

注:上記の例では、"SynPS/2 Synaptics TouchPad"11に置き換えることもできます。これは、この特定の入力のIDであるためです。 、したがって、これは上記と同じです。

$ xinput set-button-map 11 1 2 3 4 0 6 7 8 9 10 11 12

デバイス名に関するヒント

xinput listの出力で、文字列id=#の列に気付いたかもしれません。

$ xinput list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech Unifying Device. Wireless PID:4013   id=9    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=11   [slave  pointer  (2)]
⎜   ↳ TPPS/2 IBM TrackPoint                     id=12   [slave  pointer  (2)]

これらのIDは、「SynPS/2SynapticsTouchPad」という長い煩わしい文字列の代わりに使用できます。

$ xinput list-props 11
8
slm