使用 xbindkeys 配置 Logitech 鼠标

使用 xbindkeys 配置 Logitech 鼠标

我有一款 Logitech Performance MX 鼠标,我想使用 xbindkeys 为 Ubuntu 14.10 配置它。我按照以下步骤成功安装了 xbindkeys 和 xautomation这个帖子但是,按钮仍然不起作用。

这是我的 xbindkeysrc 文件:

# For the benefit of emacs users: -*- shell-script -*-
###########################
# xbindkeys configuration #
###########################
#
# Version: 1.8.6
#
# If you edit this file, do not forget to uncomment any lines
# that you change.
# The pound(#) symbol may be used anywhere for comments.
#
# To specify a key, you can use 'xbindkeys --key' or
# 'xbindkeys --multikey' and put one of the two lines in this file.
#
# The format of a command line is:
#    "command to start"
#       associated key
#
#
# A list of keys is in /usr/include/X11/keysym.h and in
# /usr/include/X11/keysymdef.h
# The XK_ is not needed.
#
# List of modifier:
#   Release, Control, Shift, Mod1 (Alt), Mod2 (NumLock),
#   Mod3 (CapsLock), Mod4, Mod5 (Scroll).
#

# The release modifier is not a standard X modifier, but you can
# use it if you want to catch release events instead of press events

# By defaults, xbindkeys does not pay attention with the modifiers
# NumLock, CapsLock and ScrollLock.
# Uncomment the lines above if you want to pay attention to them.

#keystate_numlock = enable
#keystate_capslock = enable
#keystate_scrolllock= enable

# Examples of commands:

"xbindkeys_show" 
  control+shift + q

# set directly keycode (here control + f with my keyboard)
#"xterm"
#  c:41 + m:0x4

# specify a mouse button
#"xterm"
#  control + b:2

#"xterm -geom 50x20+20+20"
#   Shift+Mod2+alt + s
#
## set directly keycode (here control+alt+mod2 + f with my keyboard)
#"xterm"
#  alt + c:0x29 + m:4 + mod2
#
## Control+Shift+a  release event starts rxvt
#"rxvt"
#  release+control+shift + a
#
## Control + mouse button 2 release event starts rxvt
#"rxvt"
#  Control + b:2 + Release

"xte 'key Control_L'"
b:10 

##################################
# End of xbindkeys configuration #
##################################

谢谢。

答案1

我知道这个问题已经存在一年了,但似乎仍然没有答案。

我认为您的问题在于您只是触发了xte 'key Control_L',它只会“点击”您的控制键,这意味着按键只会模拟很短的时间,然后按键就会被释放。您需要keydown在开始按下鼠标按钮时发出一个事件,并keyup在释放鼠标按钮时触发一个事件。您的.xbindkeysrc应该看起来像这样:

"xte 'keydown Control_L'"
    b:10

"xte 'keyup Control_L'"
    b:10 + Release

答案2

我发现 xte 很不稳定。我将 logitech 518 的拇指按钮映射到“control W”以关闭选项卡和窗口的顺序一直不太好,因为 xte 排序不正确。例如,这个失败了:

"xte 'keydown Control_L' 'w' 'keyup Control_L'"
 b:8

就像这样:

"xte 'keydown Control_L' 'w' 'keyup Control_L'"
 b:8 + release

我还注意到 xte 很慢。我尝试了 xvkbd,效果很好。

当然你必须用这个来获取 xvkbd:

sudo apt-get install xvkbd

将其放入.xbindkeysrc你的主目录中的文件中

"xvkbd  -text '\C\[w]'"
m:0x0 + b:8

并重新启动 xbindkeys

pkill -f xbindkeys && xbindkeys

答案3

我有一台 Logitech M705,刚刚经历了这种情况。

按钮 8 映射到侧面的前进/后退按钮:

###########################
# xbindkeys configuration #
###########################
# Workspace Left
 "xte 'keydown Control_L' 'keydown Alt_L' 'key Left' 'keyup Alt_L' 'keyup Control_L'"
  b:8
##################################
# End of xbindkeys configuration #
##################################

答案4

我在映射鼠标按钮时也遇到了麻烦。这里现有的答案都没有触及问题的核心。

TL;DR:将+ release关联添加到映射(参见最后的代码片段)。

举个例子,我想显示窗口概览,我试图这样做:

"/usr/bin/dbus-send --session --print-reply --type=method_call --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval string:'Main.overview.toggle();'"
  b:8

我添加了一些日志来确认xbindkeys是否接收到了压力,事实是这样的:

"echo 'b:8 pressed' > /tmp/.xbindkeys.log 2>&1"
  b:8

因此,鉴于按键操作正常,我知道问题不在于xbindkeys拾取按键,而在于其他地方。我尝试使用 模拟按键xte,但这也没有用。然而,当我这样做时,我注意到屏幕上窗口的焦点发生了一些奇怪的事情。

"/usr/bin/xte 'keydown Super_L' 'key s' 'keyup Super_L' >> /tmp/.xbindkeys.log 2>&1"
  b:8

我在黑暗中尝试将+ release关联添加到命令中,从而解决了该问题:

"/usr/bin/xte 'keydown Super_L' 'key s' 'keyup Super_L' >> /tmp/.xbindkeys.log 2>&1"
  b:8 + release

鉴于按键分配可能会发生变化,使用xte不是一个可靠的解决方案,所以我想回到命令dbus-send。因此,交换命令并包括+ release关联后,一切都正常了:

"/usr/bin/dbus-send --session --print-reply --type=method_call --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval string:'Main.overview.toggle();'"
  b:8 + release

事后我发现在Arch 维基+ release。有人可以在评论中解释为什么需要它吗?

相关内容