ずっと前、私は「自然なスクロール」を作るために~/.Xmodmap
逆合い4
を作りました。5
pointer = 1 2 3 5 4 7 6 8 9 10 11 12
標準的な方法でリソース()を取得します.Xmodmap
。これは何の問題もなく何年も働きました。.xinitrc
xmodmap $HOME/.Xmodmap &
最近というプログラムをインストールしました。cockatrice
。プログラム内でスクロールするとき、何らかの理由でスクロール方向が「自然」ではないことを除いて、プログラムに他の問題はありません。つまり、.Xmodmap
このアプリだけが私のスクロール方向に従わないようです。
最初はQt入力モジュールに問題があると思いましたが、Qt入力モジュールで正しく宣言し、QT_IM_MODULE
他のアプリケーションではこの問題が発生しなかったことに気づきました。xim
.xinitrc
これはアプリケーション関連の問題ですか、それともQt関連の問題ですか?この問題をさらに解決するにはどうすればよいですか?
失敗して普遍的に設定してみてくださいxinput
。
$ xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=12 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
# unneeded information regarding my keyboard
$ xinput set-prop 2 "Evdev Scrolling Distance" -1 -1 -1
property 'Evdev Scrolling Distance' doesn't exist, you need to specify its type and format
答え1
Qtに固有のようです(Qt Assistantで試してみてください)。 Qtのスクロールホイールイベントはスクロール距離だけを使用しているようです。
ここでは、xmodmapを使用する代わりに、スクロール距離を負の値に設定できます。
/etc/X11/xorg.conf.d/
evdevで管理しているマウスの場合は、次のファイルを使用して設定できます。
Section "InputClass"
Identifier "Reverse Scrolling"
MatchIsPointer "on"
Option "VertScrollDelta" "-1"
Option "HorizScrollDelta" "-1"
Option "DialDelta" "-1"
EndSection
または、xinput
最初に試してみることもできます。
xinput set-prop <your device id> "Evdev Scrolling Distance" -1 -1 -1
(端末 ID を取得してくださいxinput list
:)
これらの属性は実際のデバイスとともにリストされます。タッチパッドのプロパティをここにリストする必要がありますxinput list-props 12
。シナプティクスタッチパッドだからこのマニュアルページ属性は次のようにする必要があります。
xinput set-prop <touchpad id> "Synaptics Scrolling Distance" -1 -1
(垂直エッジと水平エッジの2つの値しかありません。)
設定ファイルの規則は次のとおりですMatchIsTouchpad
。
Section "InputClass"
Identifier "Natural Scrolling"
MatchIsTouchpad "on"
Option "VertScrollDelta" "-1"
Option "HorizScrollDelta" "-1"
EndSection
答え2
@Leiazの答えに追加したいと思います。
私の場合ロジクールM325。
$ xinput
⎡仮想コアポインタid=2 [マスターポインタ(3)]
⎜ ↳仮想コアXTESTポインタid=4 [スレーブポインタ(2)] ⎜ ↳
HID 04b4:0823 id=10
id=12 [スレーブポインタ(2)]
⎜ ↳ ロジクール M185/M225 id=11 [スレーブポインタ(2)]
$ xinput list-props 12
デバイス「Logitech M325」:アクティブ
デバイス(152):1
座標変換マトリックス(154):1.000000、0.000000、0.000000、0.000000、1.000000、0.000000、0,000入力
加速度(286):0.000000
libinput加速度速度既定値 (287): 0.000000
libinput アクセラレーション プロファイル有効 (288): 1, 1
libinput アクセラレーション プロファイルの有効化 (289): 1, 0
libinput アクセラレーション プロファイルの有効化 デフォルト値 (290): 1, 0
libinput自然スクロールを有効にする(291):0
libinput 自然スクロールを有効にする デフォルト値 (292): 0
libinput イベント送信モードを有効にする (271): 1, 0
libinput イベント送信モードを有効にする (272): 0, 0
libinput イベント送信モードを有効にする デフォルト値 (273): 0 , 0
libinput 左アクティブ(293): 0
libinput 左アクティブのデフォルト値(294): 0
libinput スクロール方式の有効化(295): 0, 0, 1
libinput スクロール方式の有効化(296): 0, 0, 0
libinput スクロール方式の有効化 デフォルト値(297): 0 、0、0
libinputボタンスクロールボタン(298):2
libinputボタンスクロールボタンデフォルト値(299):2
libinput中間エミュレーションを有効にする(300):0
libinput中間エミュレーションを有効にするデフォルト値(301):0
デバイスノード(274): "/ dev/input/event16"
デバイス製品 ID(275): 1133, 16394
libinput ドラッグロックボタン(302):
libinput 水平スクロールを有効にする(303): 1
「Natural Scrolling Enabled(291)」プロパティがあるため、これを「1」に変更するとマウスホイールの方向が反転します。
$ xinput set-prop 12 291 1
プロセスをシェルスクリプトにラップするには:
#!/bin/bash
dev_id=$(xinput | sed -n '/Logitech M325/{s/^.*Logitech M325\s\+id=\([0-9]\+\).*$/\1/;p;}')
if [[ -z "$dev_id" ]];then
exit 1
fi
nse_id=$(xinput list-props "$dev_id" | sed -n '/Natural Scrolling Enabled ([0-9]\+)/{s/^.*Natural Scrolling Enabled (\([0-9]\+\)).*/\1/;p;}')
if [[ -z "$nse_id" ]];then
exit 1
fi
xinput set-prop "$dev_id" "$nse_id" 1
xinput list-props "$dev_id" | grep -o "Natural Scrolling Enabled ($nse_id):\s\+[0-9]"
「Logitech M325」を自分のデバイス名に変更してください。