Thu Jun 30 21:52:27 JST 2016

Linux, Touchpad, xinput

社内に不要品取引システムがあって、闇市と呼ばれている. アクセスできる人なら誰でも自由に出品ができて、品物はオークションに出される. アクセスできる人なら誰でも自由に競りに参加することができる. ただし金品の実際のやり取りは、実際にどちらかがどちらかの席まで実際に行って行われる. 大抵、競り落とした人が、出品した人の席まで脚を運ぶことが多いようだ.

Logicool T650 というタッチパッドを定価の半額で手に入れた. 何も考えてなくて、Windows用であるらしく、会社のMacでは使えなかった. 最もMacで使うつもりは無かったので、それは構わなかった. 自宅のUbuntu機に接続して使っている.

簡単に調べた所、タップをクリックと認識させるには、ファームウェアのアップデートが必要で、 そのアップデートはWindows機が無いとできないらしい. 私が手に入れたこれは、接続したら既にそのように使えたので、ファームウェアはアップデート済みだったらしい.

しかしながら、意図しない程度のタップがクリックと認識されたり、2本指でスクロールした後に指を持ち上げる動作で右クリックと認識されたり、 なかなか使いづらかった.

マウスの設定するために、普通デスクトップ環境に付随する、「パソコン全般の設定」の中に、普通含まれてる「マウスの設定」を使おうとした. これは Ubuntu なので (不断私は Unity を使ってるわけではないのだが) unity-tweak-tool が初めから入っている. この中にマウスの設定があるにはあるが、設定項目が極端に少く、また水平方向へのスクロールという項目のチェックボックスが、チェックできない (disable) ようになっていた. 最後のに関しては、タッチパッドを正しく認識できてないせいなのだろうか? lxde のそれも試したが、せいぜい、ダブルクリックの時間間隔を設定するくらいのものだった.

基本的に xinput を使えば、設定できない項目はない. 昨日の夜、どんな項目が存在するのかを一通り読んで、一応満足できる設定が完成したので、コピペしておく.

参考文献

ほとんど、1つめの文書で事足りる. ただし古いのか何のか、全ての設定項目を網羅できていなくて、 'Soft Button Areas' に関しては、2つめの文書を参照した.

設定

次を .xinitrc に書いてある

TP='Logitech Rechargeable Touchpad T650' 
xinput set-prop "$TP" 'Synaptics Move Speed' 1.4, 3.0, 0.1, 0.000000  # min, max, accel, ?
xinput set-prop "$TP" 'Synaptics Finger' 4 18 0  # release, touch, press の圧力
xinput set-prop "$TP" 'Synaptics Two-Finger Scrolling' 1 1  # 垂直 水平 2本指スクロールのオン
xinput set-prop "$TP" 'Synaptics Scrolling Distance' 50 50  # 速度 値が小さいほど速い
# xinput set-prop "$TP" 'Synaptics Tap Action' 0 0 0 0 1 1 1  # 右上 右下 左上 左下 TapButton1 TapButton2 TapButton3
xinput set-prop "$TP" 'Synaptics Soft Button Areas' 2416, 0, 2938, 0, 0, 0, 0, 0  # 右クリック領域の左右上下、中クリック領域の左右上下

'Synaptics Move Speed': マウスカーソルを普通に動かす時の速度. 1つめの数字が動き始めの速度. 動き始めはゆっくり. 指を早く滑らせると、3つめの数字にしたがって加速し、2つめの数字を上限とする速度まで早くなる. 4つめの数字は知らん.

'Synaptics Finger': 押しこむ圧力が、1つ目の数字を下回ったら、マウスリリースと見做す. 2つめを上回ったら、タッチを見做す. 3つめを上回ったらプレスと見做す. 今の場合、タッチもプレスも同じクリックだし、強く押したら普通にクリックのスイッチが入るので、3つめの数字は意味のないダミー.

'Synaptics Two-Finger Scrolling': この数字はただのブーリアン. つまり 0 か 1 かをそれぞれ指定する. ここでは垂直方向、水平方向へのスクロールを2本指を滑らすことで行うことをスイッチオンしてる.

'Synaptics Scrolling Distance': スクロールの速度. それぞれ垂直、水平方向に対応. 速度っていったけど、数字が小さいほど速い.

'Synaptics Tap Action': 右上、右下、左上、左下、それからなんかボタン3つに特別なクリックを割り当てられる. 特別っていっても、左中右クリック、のいずれかだけど. T650は、対応してないっぽい?

'Synaptics Soft Button Area': タッチパッドの上の自由な領域を指定して、右クリック、中クリックに割り当てることができる. デフォルトでは、右下よりちょっとだけ真ん中くらいのある領域だけが右クリックになってて、そこをタップかクリックすると、右クリックとなっていた. これが嫌なので、上の設定では、タッチパッドよりも外にある座標を指定して、右クリックの領域を実際上消している.

念の為

デバイス名や、そのデバイスのための設定項目、デフォルト値は、xinput で取得する