很久以前,我创建了一个~/.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_IM_MODULE
to ,并且我从未在任何其他应用程序中遇到过此问题。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
应该列出触摸板的属性。由于它是 synaptics 触摸板,因此这个手册页该属性应该是:
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
答案2
我想补充@Leiaz的答案。
就我而言,我正在使用罗技 M325。
$ xinput
⎡ 虚拟核心指针 id=2 [主指针 (3)]
⎜ ↳ 虚拟核心 XTEST 指针 id=4 [从指针 (2)]
⎜ ↳ HID 04b4:0823 id=10 [从指针 (2)]
⎜ ↳ Logitech M325 id=12 [从属指针 (2)]
⎜ ↳ Logitech 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.000000、0.000000、1.0000 00
libinput 加速速度 (286): 0.000000
libinput 加速速度默认值 ( 287): 0.000000
libinput Accel 配置文件可用 (288): 1, 1
libinput Accel 配置文件启用 (289): 1, 0
libinput Accel 配置文件启用默认 (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
如果您想将过程包装在 shell 脚本中,则如下:
#!/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”更改为您自己的设备名称。