IVl*_*lad 6 mouse shortcut-keys kubuntu xbindkeys 15.04
我有一个罗技 Proteus Core鼠标。在 Windows 10 下,我设置了它的一个按钮(鼠标顶部标有“G9”的小按钮)来显示任务列表,可以使用 Win+Tab 键调出该列表。请注意,即使您同时释放 Win 和 Tab 键,此功能也会保持不变,只有在您单击要转到的窗口后,它才会消失。所以工作流程是:按下并释放G9鼠标按钮,点击我想要的窗口。
我想要在 Kubuntu 15.04 下有类似的行为。AFAIK,没有办法调出类似的任务列表,它会一直存在,直到您单击某些内容,而无需按住任何键。
所以我的想法是用这个按钮模拟 Alt+Tab。我想到的工作流程是:push G9(“push alt、push tab、realease tab”的快捷方式)=> 选择我想要的窗口,释放 G9(“release alt”的快捷方式)。
问题是,据我所知,这个 G9 按钮没有被操作系统读取为普通的鼠标按钮。如果我运行:
xbindkeys -mk
Run Code Online (Sandbox Code Playgroud)
然后点击 G9 按钮,我得到这个输出:
"(Scheme function)"
m:0x40 + c:23
Mod4 + Tab
"(Scheme function)"
m:0x40 + c:133
Mod4 + Super_L
Run Code Online (Sandbox Code Playgroud)
注意:为了测试目的,我在 VM 中运行它。让我知道这是否会影响事情,尽管我也需要它在这种情况下工作。
如果我运行:
xev | grep button
Run Code Online (Sandbox Code Playgroud)
当我点击我感兴趣的 G9 按钮时,我没有得到任何输出。如果我点击其他按钮,我会得到如下预期的输出:
state 0x0, button 2, same_screen YES
Run Code Online (Sandbox Code Playgroud)
这很奇怪,但我想我可以将xbindkeys -mk输出添加到我的~/.xbindkeysrc:
"xte 'keydown Alt_L' 'key Tab'"
m:0x40 + c:23 + Release
Run Code Online (Sandbox Code Playgroud)
显然,即使这行得通,它也不会按照我的意愿行事,但它甚至不起作用。运行后单击 G9 按钮时没有任何反应:
xbindkeys -v -n
Run Code Online (Sandbox Code Playgroud)
这给出了这个警告:
请确认没有其他程序正在运行,它捕获了 xbindkeys 捕获的密钥之一。好像有冲突,xbindkeys 无法抓取其配置文件中定义的所有键。
如果我xte在控制台中键入命令,它会显示任务选择 alt+tab 菜单。然而,绑定的鼠标按钮没有。
如果我将相同的xte调用分配给另一个按钮,xev输出显示的那个按钮(我尝试了鼠标右键),它仍然没有执行(似乎只有选项卡被执行,因为它在文本编辑器中标记内容),但是警告消失了,按钮的常规功能也消失了:
Alt+Tab单击 G9 按钮时如何获得我描述的行为?另一个按钮,一个xev检测到的按钮怎么样b:3?
注意:此鼠标会在内部保存通过其 Windows 软件所做的配置。所以我所有的其他按钮都在 VM 中保留它们的功能:在浏览器中后退/前进、切换浏览器选项卡等。罗技软件允许在 Windows 中进行宏录制,但它不允许为推送/释放事件指定不同的操作,AFAIK。
如果有办法在 Windows 下录制正确的宏,或者有办法简化我想在 Kubuntu 下实现的目标——即使用 G9 按钮获得与 alt+tab 类似的功能——,我也会接受那些解决方案。
evrouter可以帮助做到这一点。它甚至允许在从列表中选择任务之前释放 G9。
http://www.bedroomlan.org/projects/evrouter
我已经从源代码构建它并安装了checkinstall,但是那里有一些看起来像存储库的东西。
它可以配置在~/.evrouterrc:
"Logitech Gaming Mouse G300" "/dev/input/event.*" any key/272 "SHELL//home/velkan/click.sh"
"Logitech Gaming Mouse G300" "/dev/input/event.*" any key/275 "SHELL//home/velkan/atab.sh"
Run Code Online (Sandbox Code Playgroud)
运行sudo evrouter -d /dev/input/event*和点击将有助于组成这些行。
"Logitech Gaming Mouse G300" 是我鼠标的名字。
"/dev/input/event.*" 意味着无论鼠标绑定的设备文件的名称如何,输入都将被拦截。
any - 表示事件将被任何 Alt/Ctrl/Shift 修饰符接受。
key/272 - 鼠标左键。
key/275 - 后退鼠标按钮(对我来说在 G4 上)。
"SHELL//home/velkan/click.sh"-/home/velkan/click.sh在该事件发生时运行。
因此,/home/velkan/atab.sh脚本(在这种情况下绑定到 G4):
#!/bin/bash
mktemp /tmp/evr-alt-tab-XXXX
/usr/bin/xte 'usleep 100000' 'keydown Alt_L' 'usleep 50000' 'key Tab'
Run Code Online (Sandbox Code Playgroud)
它创建一个临时文件,通知click.sh(绑定到左按钮)它需要释放 Alt。
click.sh 脚本:
#!/bin/bash
if [ -e /tmp/evr-alt-tab-???? ]; then
/usr/bin/xte 'usleep 100000' 'keyup Alt_L'
rm /tmp/evr-alt-tab-????
fi
Run Code Online (Sandbox Code Playgroud)
没在 KDE 上试过。
启动脚本/usr/local/sbin/evrouter_launch.sh:
#!/bin/sh
/usr/local/bin/evrouter /dev/input/event* 0<&- > /dev/null
Run Code Online (Sandbox Code Playgroud)
(或者它可能/usr/bin/evrouter代替/usr/local/bin/evrouter)
配置/etc/lightdm/lightdm.conf以使用桌面管理器启动 evrouter:
[SeatDefaults]
autologin-user=
session-setup-script=/usr/local/sbin/evrouter_launch.sh
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2549 次 |
| 最近记录: |