web-dev-qa-db-ja.com

デフォルトのXinput値を変更する方法は?

マウスのマウスアクセラレーションを無効にし、libinput Accel Profile Enabled Defaultの値を1, 0から0, 1に変更するために、コマンドxinput --set-prop [ID] [id of the value] 0, 1で変更したいのですが、エラー:

X Error of failed request:  BadAccess (attempt to access private resource denied)
  Major opcode of failed request:  131 (XInputExtension)
  Minor opcode of failed request:  57 ()
  Serial number of failed request:  19
  Current serial number in output stream:  20

マウスのIDが理由もなく絶えず変化するため、スタートアップアプリケーションを作成できません。また、タッチパッドのポインター加速をオンにする必要があるため、変数のグローバル値を変更することもできません。

2
kiroma

編集済み:

答えを編集して、はるかに単純なアプローチを示します。次のように、IDの代わりにデバイスtype:nameを使用できます。

xinput set-prop "keyboard:Logitech K400 Plus" "libinput Middle Emulation Enabled" 1

これにより、volatile IDフィールドを知る必要がなくなります。


古い答え:

Xinputのデフォルト値を変更する方法を見つけていませんでしたが、bashパイプを使用してIDを動的に取得し、Startup Aplicationで使用できます。

私はあなたのデバイスの詳細に欠けているので、私は私の個人的なケースで例証します。 K400 +キーボードのXinputプロパティを変更したい。

最初に、デバイスを識別するXinput行nivocallyを見つける必要があります。

$ xinput

⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech K400 Plus                        id=6    [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Logitech K400 Plus                        id=7    [slave  keyboard (3)]

したがって、単純な正規表現K400.*keyboardを使用して、最後の行(ポインターの行ではない)を取得できます。次に、この正規表現をパイプにgrepし、cutユーティリティでIDを分離します。

$ xinput | grep K400.*keyboard | cut -f2 | cut -c4-
7

最後に、私はそれを使用して、必要なプロパティを変更します。この場合、libinput Middle Emulation Enabledに興味があります。これを行う完全なコマンドは次のとおりです。

xinput | grep K400.*keyboard | cut -f2 | cut -c4- | 
xargs -I{} xinput set-prop {} "libinput Middle Emulation Enabled" 1

これで、スタートアップアプリケーションとして使用できます。

1
Susensio