web-dev-qa-db-ja.com

Thinkpadでトラックポイントを使用中にタッチパッドを無効にする方法は?

Thinkpad(たとえば、私が使用しているX230)には、トラックポイントとタッチパッドの両方があります。入力中、タッチパッドは無効になります。

ただし、トラックポイントを使用しているときは、タッチパッドにも頻繁に触れ、回避したいマウスクリックを生成します。トラックポイントの使用中に、タッチパッドでのマウスクリックを無効にする方法を誰もが考えていますか?

編集:また、誰かがタイピング時にタッチパッドを無効にするオプションがどのように機能するかを説明できますか?舞台裏で何が行われていますか?それはxinput設定コマンドですか?はいの場合、どれですか?

EDIT2:明確化;タッチパッドを手動で無効にすることは(ショートカットがあっても)ここでは問題ではありません。これは、「入力時にタッチパッドを無効にする」オプションと同じように機能します。これは、タッチパッドとトラックポイントを同じ意味で使用するためです(ほとんどの場合、スクロールにはタッチパッドを使用し、カーソルを移動するにはトラックポイントを使用します)。

21
January

キーボードの使用中にタッチパッドを無効にする

この機能は、xserver-xorg-input-synapticsパッケージのsyndaemonユーティリティによって実行されます。アイドル時間、ポーリング頻度などのオプションを設定できます( runtime help を参照):

使用法:syndaemon [-iアイドル時間] [-mポーリング遅延] [-d] [-t] [-k] 
 -i最後のキーの後に待機する秒数タッチパッドを有効にする前に
を押します。 (デフォルトは2.0s)
 -m次のポーリングまで待機するミリ秒数。
(デフォルトは200ms)
 ... 
 -tのみマウスの動きではなく、タップとスクロールを無効にします。

ソースコードはこちら for syndaemon.c.

  • 重要な関数はkeyboard_activity(...)およびmain_loop(...)です
  • keyboard_activityは、 XQueryKeyMap API呼び出しを使用して、キーボードの現在の状態(キーごとに1ビット)を取得します。そして、最後の(古い)状態と比較します。それらが異なる場合、1を返します
  • main_loopポーリングkeyboard_activitymミリ秒ごとに、「最後のアクティビティ時間」とkeyboard_activityがtrueまたはfalseを返すかどうかに基づいて、タッチパッドを無効にするか有効にするかを決定します。
  • dp_get_device関数は、X入力デバイスの列挙方法を示します。これとkeyboard_activity関数を変更して、トラックポイントアクティビティもチェックできるようにする必要があります。

  • xinputツールは、デバイスとIDをリストします。たとえば、

    仮想コアポインターid = 2 [マスターポインター(3)] 
    ⎜↳仮想コアXTESTポインターid = 4 [スレーブポインター(2)] 
    ⎜↳SynPS/2 Synaptics TouchPad id = 11 [スレーブポインター(2)] 
    ⎜↳TPPS/2 IBM TrackPoint id = 12 [スレーブポインター(2)]
  • XListInputDevices 関数を介してこれ(ID)を取得できます

  • その後、 XOpenDevice を使用してIDからデバイスハンドルを取得する必要があります
  • 次に、 XQueryDeviceState 関数を使用して、TrackPointポインターの座標を取得します。既存のループと同様に、これを頻繁にポーリングし、座標が変更されたかどうかを確認します(つまり、トラックポイントが使用中です)。これを使用して、タッチパッドのオンとオフを切り替えます。
  • xinputユーティリティとquery-stateスイッチおよびデバイスIDを使用して、プログラミングが正しいかどうかを確認できます。次に例を示します。

     $ xinput query-state 12 
     2クラス:
     ButtonClass 
     button [1] = up 
     button [2] = up 
     button [3] = up 
     button [4] = up 
     button [5] = up 
     button [6] = up 
     button [7] = up 
     ValuatorClass Mode =相対近接= In 
     valuator [0] = 854 
     valuator [1] = 867 
    
  • トラックポイントのX座標とY座標であるvaluator値に興味があります
  • その他のヒントについては、xinputソースを参照してください
  • このパッケージを変更および再構築するには:

    1. apt-get source...でソースを取得します
    2. tools/syndaemon.cに変更を加えます
    3. 118...124...行とdebian/patches/series行をコメント化して、既存のsyndaemonパッチを無効にします
    4. 変更したパッケージをdpkg-buildpackage -us -ucでビルドすると、debファイルは親ディレクトリにあります。
10
ish

最初に行うことは、タッチパッドIDを知ることです。

最初にターミナルを開き、このコマンドを実行します

~$ xinput --list

ここでこれを取得しますTouchpad id = <id Number>

その後、キーボードショートカットを開き、以下の2つのコマンドをキーボードショートカットと共に追加します。

# Disable Touchpad:
xinput set-prop <id number> 'Device Enabled' 0

# Enable Touchpad:
xinput set-prop <id number> 'Device Enabled' 1

enter image description hereenter image description here

4
newuser

以下は、電力の使用に悪い可能性のあるローテクのソリューションです(syndaemon -Tパッチは私には機能しませんでした)。

#!/bin/sh

TRACKPOINT_DEV="TPPS/2 IBM TrackPoint"
SLEEP_TIME=5

OLD_XY=0,0,
while true; do
  NEW_XY=`xinput query-state "$TRACKPOINT_DEV" |grep valu|awk 'BEGIN { FS = "=" } ; {print $2 ","}'|xargs`
    if [ ! "$OLD_XY" = "$NEW_XY" ]; then
      synclient TouchpadOff=1
    else
      synclient TouchpadOff=0
    fi
    sleep $SLEEP_TIME
    OLD_XY="$NEW_XY"
done

トラックポイントを使用していることに気づくのは、幸運なことに、5秒ごとの間隔でしか座標を知ることができないためです。つまり、タッチパッドを無効にすることは保守的ですが、トラックポイントがアイドル状態のときにタッチパッドを確実に再度有効にする必要はありません。

とにかく、Palm Pressからカーソルをさまようことで、ウルトラブックで大いに役立ちます。

0
covener