web-dev-qa-db-ja.com

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

私の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を使用しています。

10
michuk

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

つまり、DMがxinput設定をオーバーライドするために何らかの処理を行い、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)が採用されました。

これが誰かの助けになることを願っています。

7
Marcin Kaminski

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

または

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

4
NickTux

/etc/X11/Xsession.d/にファイルを作成します。

3
Florian Diesch

これは、ターミナルからbuntu 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

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

1
Marco