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


21

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

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

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

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


これは面白いでしょう。キーボードのレイアウト方法は、適切な操作を妨げる迷いジェスチャーの原因になります。私はこれが現在のオプションで可能だとは思わないが、おそらく将来的には?トラックパッドをブラッシング/ナッジするのを避けるために、(右の)手を背の高い位置に反らせて、タイプ&ポイントするために2本の手を使わなければならないことに気付きました。
フリーマ

現時点では、タッチパッドでのマウスクリックを無効にしています。ほとんどの場合、タッチパッドの上部にあるボタンを使用しています。

回答:


10

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

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

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

のソースコード次に示しますsyndaemon.c

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

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

    仮想コアポインターid = 2 [マスターポインター(3)]
    ⎜↳仮想コアXTESTポインターid = 4 [スレーブポインター(2)]
    PS↳SynPS / 2 Synaptics TouchPad id = 11 [スレーブポインター(2)]
    TP↳TPPS / 2 IBM TrackPoint id = 12 [スレーブポインター(2)]

  • XListInputDevices関数を介してこれ(ID)を取得できます

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

    $ xinputクエリ状態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 = Relative Proximity = In
    valuator [0] = 854
    valuator [1] = 867
    
  • トラックポイントのXおよびY座標であるバリュエーター値に興味があります。
  • xinputその他のヒントについては、ソースをご覧ください
  • このパッケージを変更および再構築するには:

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

1
バウンティは3日で期限切れになるので、私はあなたと取り引きします(より良い答えが表示されない限り):xinput識別子と変更されたソースからdebパッケージを作成する方法を説明するページへのリンクを提供します。その後、このアプローチを適用できます。大丈夫ですか?

申し訳ありませんが、私は不在です。数時間で情報を見つけて回答を編集してみます。
ish

心配ない!それは結構です

1
約束されたように、あなたは賞金を得ます。ただし、最初にソリューションをコーディングする必要があるため、答えは受け入れません。

1
@January、あなたはまだあなたのソリューションをコーディングできたかどうかわかりませんか?トラックポイントの監視をサポートするために、syndaemonにパッチを適用しました。github.com/eyko/xf86-input-synaptics(ここでコミットgithub.com/eyko/xf86-input-synaptics/commit/…)TrackPointを監視するには、syndaemonの実行時に-Tオプションフラグを渡す必要があります。
ビンス

4

最初に行うことは、タッチパッド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

ここに画像の説明を入力してください ここに画像の説明を入力してください


感謝しますが、タッチパッドを手動で無効にすることはここでは問題ではありません(ショートカットがあっても)、私はそれを行う方法を知っています。アイデアは、トラックポイントの使用中にタッチパッドを無効にするのと同じ方法で、タッチパッドを自動的に無効にすることですキーボードの使用時に自動的ます(「マウスとタッチパッド」設定の「入力中のタッチパッドを無効にする」設定を参照)。

0

これは、電力の使用に悪い可能性のあるローテクのソリューションです(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秒ごとの間隔でしか座標を知ることができないためです。つまり、タッチパッドを無効にすることは保守的ですが、トラックポイントがアイドル状態のときにタッチパッドを確実に再度有効にする必要はありません。

とにかく、手のひらを押してカーソルをさまようことで、ウルトラブック上で大いに役立ちます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.