Qt 应用程序违反 Xmodmap

Hal*_*ost 7 mouse scrolling qt

很久以前,我创建了一个~/.Xmodmap反转45创建“自然滚动”:

pointer = 1 2 3 5 4 7 6 8 9 10 11 12
Run Code Online (Sandbox Code Playgroud)

余源.Xmodmap.xinitrc以标准方式(xmodmap $HOME/.Xmodmap &)。这已经工作了多年没有问题。

我最近刚刚安装了一个名为cockatrice. 我对程序没有其他问题,除了出于某种原因,当我在程序内滚动时,我的滚动方向不是“自然的”(即,就好像.Xmodmap只有这个应用程序不服从我的)。

起初,我以为是我的Qt输入模块的问题,但我意识到,我已经正确地宣布QT_IM_MODULExim在我.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
Run Code Online (Sandbox Code Playgroud)

Lei*_*iaz 6

它似乎是特定于 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
Run Code Online (Sandbox Code Playgroud)

或者您可以先尝试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 (只有两个值,垂直和水平边缘。)

对于配置文件中的规则,它应该与MatchIsTouchpad

Section "InputClass"
        Identifier "Natural Scrolling"
        MatchIsTouchpad "on"
        Option "VertScrollDelta" "-1"
        Option "HorizScrollDelta" "-1"
EndSection
Run Code Online (Sandbox Code Playgroud)