「xinput」コマンドをどこに貼り付けて、GNOMEの起動時にコマンドを実行する必要がありますか?


10

私のThinkpadでは、ターミナルで次のようなものを実行する必要があります。

xinput set-int-prop "TPPS/2 IBM TrackPoint" "Evdev Middle Button Emulation" 8 1

タッチパッドの2つのボタンでマウスの中央クリックをエミュレートできるようにします。GNOMeやXなどを起動するたびにこの行を実行して、「うまくいく」ようにする必要があります。

〜/ .xsessionまたは〜/ .bashrcを試しましたが、役に立ちませんでした。GNOME起動スクリプトまたは/ etc / Xのどこかに配置する必要がありますか?

Ubuntu 11.10を使用しています。


ファイルsleep 5の先頭にを追加してみ.xsessionますか?
Thomas Ahle、2012

1
@ThomasAhleは、ウィンドウマネージャーが読み込まれ、.xsessionの実行後にevdevプロパティを変更した場合に問題を解決しません。
Marcin Kaminski、2012年

回答:


7

私はEnlightenment DMを使用していますが、それは他のDM /デスクトップに関連しています。私はxsessionを使用してセッションを開始するため、最初にxinputコマンドを〜/ .xsessionに配置しましたが、変更したいすべての設定は変更されませんでした。それらの一部のみ。すべての変更を期待するか、まったく変更しないかを予測していたため、.xsessionに1秒間隔で10回の繰り返しループを追加し、毎回xinputコマンドを実行して、設定が適用されたかどうかを確認しました。驚いたことに、すべての設定は最初の反復後に適用されました。

つまり、xinput設定を上書きするために何かを行うのはDMであり、DMを起動するコマンド(私の場合はE17)が.xsessionファイルの最後のコマンドであるため、このファイルはこの場所にはありません。

〜/ .profileに次の行を追加しました。これで問題が解決しました:

# don't run unless we're being invoked from an xwindows session
if [[ -n ${DISPLAY} ]]; then

  # set your devices names here
  pointer1="IBM TrackPoint"
  pointer2="Lite-On Technology Corp. ThinkPad USB Keyboard with TrackPoint"
  pointer3="Logitech USB Trackball"

  id1=$(xinput | awk -F= "/$pointer1.*pointer/ {print \$2}" | cut -f1)
  id2=$(xinput | awk -F= "/$pointer2.*pointer/ {print \$2}" | cut -f1)
  id3=$(xinput | awk -F= "/$pointer3.*pointer/ {print \$2}" | cut -f1)

  if [[ -n "${id1}" ]]; then
    xinput --set-button-map "${id1}" 1 2 3 4 5 6 7
    xinput set-prop "${id1}"  "Evdev Wheel Emulation Axes" 6 7 4 5
    xinput set-prop "${id1}"  "Evdev Wheel Emulation" 1
    xinput set-prop "${id1}"  "Evdev Wheel Emulation Button" 2
    xinput set-prop "${id1}"  "Evdev Middle Button Emulation" 0
  fi

  if [[ -n "${id2}" ]]; then
    xinput --set-button-map "${id2}" 1 2 3 4 5 6 7
    xinput set-prop "${id2}"  "Evdev Wheel Emulation Axes" 6 7 4 5
    xinput set-prop "${id2}"  "Evdev Wheel Emulation" 1
    xinput set-prop "${id2}"  "Evdev Wheel Emulation Button" 2
    xinput set-prop "${id2}"  "Evdev Middle Button Emulation" 0
  fi

  if [[ -n "${id3}" ]]; then
    xinput --set-button-map "${id3}" 1 2 3 4 5 6 7 8 9
    xinput set-prop "${id3}"  "Evdev Wheel Emulation Axes" 6 7 4 5
    xinput set-prop "${id3}"  "Evdev Wheel Emulation" 1
    xinput set-prop "${id3}"  "Evdev Wheel Emulation Button" 8
    xinput set-prop "${id3}"  "Evdev Middle Button Emulation" 1
  fi
fi

PS。set-int-propは非推奨になり、set-prop(man xinput)が採用されました。

うまくいけば、これは誰かを助けます。


スクリプトはすばらしいですが、残念ながら解決策はありません。現在のところ、ターミナルを実行し、必要なオプションを指定して「xinput set-prop」を実行すると、唯一の方法が機能します。Marcinのスクリプト、Startup Applicationを試しましたが、残念ながら動作しませんでした。
Geeocode 2017

"セットINT -プロプは、セット支柱を支持して非難されている" T•H•A•N•K••Y•O•U•
クレマン

4

スタートアップアプリケーションにコマンドを直接追加します。コマンドフィールド。

または

簡単なスクリプトを作成し、そのスクリプトを起動アプリケーションに追加します。


3

そのためのファイルを作成します/etc/X11/Xsession.d/


それは私にとって/etc/X11/xinit/Xsession
トーマス・アーレ2012

3
一般に、システム全体の構成ファイルでユーザー固有の構成を変更することはお勧めしません。1つ目は、別のマシンに移行する必要がある場合に覚えておくべき追加情報を作成することです。2つ目は、これらのファイルのほとんどが適切なデフォルトを提供するために存在するためです。再インストール/移行する必要があるときに、$ HOMEのスナップショットとインストール済みパッケージのリストを手元に用意しておくと便利です。
Marcin Kaminski

1

これは私がターミナルからUbuntu 14.04でそれをした方法です:

1)デバイスの名前を確認します。

xinput list

2)デバイスで利用可能なオプションを確認します。

xinput list-props "Your Device Name"

3)設定を編集します(再起動/シャットダウン後に設定を一貫させるには、このコマンドを[スタートアップアプリケーション]に追加します):

xinput set-prop "Your Device Name" "Option Name" "Value"

以下は、タッチパッドでロックされたドラッグをアクティブにするために使用したコマンドの例です。

xinput set-prop "SynPS/2 Synaptics TouchPad" "Synaptics Locked Drags" 1

別のオプションをアクティブ化/変更するには、デバイスの使用可能なオプションでそれを探し、目的の結果が得られるまでそれらを試してから、コマンドをスタートアップアプリケーションに追加すれば完了です。それが役に立てば幸い!:)

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