使用Shift键模拟水平滚动


13

当我使用(垂直)滚轮并按时,我想模拟水平滚动Shift

在某些应用程序(Chrom {e,ium})中,这已经可以使用,但是我正在寻找针对X应用程序的通用解决方案。

到目前为止,我最接近的是xbindkeys+ xdotool

# ~/.xbindkeysrc
"xdotool click 6"
  shift + b:4

"xdotool click 7"
  shift + b:5

问题是xbindkeys似乎错过了一些事件,有时垂直滚动会“通过”。这很烦人。好像xbindkeys正在使用某种轮询?

我也不喜欢每秒产生数百个shell命令。

我的屏幕很小,必须水平滚动很多。

如何实现通用水平滚动?

更新:

还有另一种方法可以满足我和xbindkeysand的大部分需求xmodmap

"xmodmap -e 'pointer = 1 2 3 6 7 4 5 8 9 10'"
  c:50
"xmodmap -e 'pointer = default'"
  release + shift + c:50

Shift被保持,指针按钮4和5被映射到6和7(按钮4/5是用于水平滚动前垂直滚动和6/7)。c:50是左键Shift。释放键后,将恢复默认指针映射。

这样很好地解决了“太多事件”的问题。但是,Shift键不再用作常规修饰符。我试图像这样重新发布Shift新闻发布事件xdotool

"xmodmap -e 'pointer = 1 2 3 6 7 4 5 8 9 10';  xdotool keydown Shift_L"
  c:50
"xmodmap -e 'pointer = default';  xdotool keyup Shift_L"
  release + shift + c:50

根据xevShift事件打通,但我认为这是没有任何更多的认可作为改性剂。例如,按Shift+ A不会产生大写字母A


1
对于许多程序,您也可以使用Ctrl +箭头进行水平滚动。
terdon

1
谢谢,但这在Firefox中对我不起作用。我正在寻找一种适用于任何地方的“通用”解决方案。
Paul Schyska 2014年

以root身份运行某些东西(例如使用sudo)会不会有问题?
brm

sudo并非最佳选择。我想您是说每次按Shift时都要进行sudo-ing吗?您能详细说明您的想法吗?
Paul Schyska 2014年

这可能没有意义,但是很久以前,对我有用~/.xbindkeysrc.scm。在某些时候它失败了,但它可能在您的系统上运行。
Sparhawk

Answers:


2

我为我找到了可以接受的解决方案。

我没有找到使用方法Shift或任何其他键作为修改器来旋转轮轴,只要按下该键即可。

我现在使用.xbindkeysrc带有切换按钮的简单按钮:

"~/toggle.sh"
  alt + x

toggle.sh脚本如下所示:

#!/bin/sh
on()
{
  xmodmap -e 'pointer = 1 2 3 6 7 4 5 8 9 10'
}

off()
{
  xmodmap -e 'pointer = default'
}

if xmodmap -pp | grep -q '4.*6'; then
  off
else
  on
fi

这使我可以切换行为。当我按下Alt+时X,我的鼠标滚轮轴被旋转,而当我再次按下它时,它被设置为默认值。

现在应该可以了。

如果有人找到一种方法来做Shift为“修饰符”(只要按下它,鼠标轴就会旋转),请告诉我。

编辑:由于Alt+ x是常用的热键,我将其更改为:

(xbindkey '(control "b:3") "toggle-wheel.sh")

(我已切换至guile配置,因此以上内容应位于名为的文件中.xbindkeysrc.scm

这将使用Ctrl+鼠标右键切换滚轮方向。


0

您可以使用btnx及其gui配置工具

更多最新的Ubuntu软件包以及此处

在使用btnx-config对鼠标进行按钮检测之后,只需将“向上滚动”以及一个shift按钮修饰符映射到您想要按的任何x按钮即可。


谢谢,我在将它构建在fedora上时遇到了问题。
Paul Schyska,2014年

1
我现在为btnx找到了一个rpm软件包。我找不到将修饰符映射为源事件的方法(即Shift + WheelUp)。我只能从WheelUp映射 Shift +其他键。我想念什么吗?我还尝试首先“检测” Shift + WheelUp,但是它说“按钮已映射”。两种情况下的原始代码均为0x02010008(按下Shift键和未按下Shift键)。我认为btnx根本无法处理多个输入设备(鼠标和键盘)
Paul Schyska 2014年

0

如此处所示,我安装了imwheel,然后~/.imwheelrc使用以下内容创建了它。

".*"
Shift_L, Up, Left
Shift_L, Down, Right

然后我imwheel -b 45在终点站跑了。我进行了测试,但还没有注意到与高滚动和xbindkeys相关的对角线问题。

NB -b 45限制imwheel仅捕获向上和向下滚动,以防止其阻止(例如)xbindkeys拇指按钮的绑定。

问题

但是,与此相关的有几个问题。

  • 这是不一致的。我可以立即将其与Firefox和Gwenview一起使用,但是Inkscape和GIMP无法正常工作。我可以使用窗口匹配来不匹配Inkscape / GIMP,但是应该有某种方法使它通用。
  • 更糟糕的是,它阻止了其他一些默认事件,例如Ctrl+ Scroll wheel,通常用于缩放。我尝试将类似的东西放进Control_L, Up, Control_L|Up~/.imwheelrc,但这没有用。
  • imwheel将水平滚轮事件发送到活动窗口,而不是鼠标光标下的窗口。这与滚轮的默认行为背道而驰。这也表明上述问题的Ctrl解决方法也不理想。
  • imwheel似乎已不在开发中。在过去的10年中(自2004年起),它一直停留在预发布版本中。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.