如何重新映射 Logitech MX400 上的搜索按钮?

Ste*_*ini 10 mouse logitech

我有一个罗技 MX400 无线。它有一个我想用于粘贴的搜索按钮(而不是极其敏感但难以按下的滚轮)。我已经用 xbindkeys 重新映射了其他按钮,并使用 xev 查找按钮按下代码,但这不适用于搜索按钮。使用 xev 并单击搜索按钮我得到以下事件

FocusOut event, serial 34, synthetic NO, window 0x3c00001,
    mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 34, synthetic NO, window 0x3c00001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 34, synthetic NO, window 0x0,
    keys:  4294967275 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

PropertyNotify event, serial 34, synthetic NO, window 0x3c00001,
    atom 0x1d7 (_NET_WM_ICON_GEOMETRY), time 23653064, state PropertyNewValue
Run Code Online (Sandbox Code Playgroud)

没有 ButtonPress 事件。看来搜索按钮是在X事件下一层拦截的。有任何想法吗?我有 ubuntu 12.04。Ubuntu 实际上看到了点击并产生了一个搜索对话框,但在 xev 中没有点击事件的痕迹。

编辑

我检查了 xmodmap 提供的方法。我.Xmodmap现在包含以下行

keycode 225 = XF86Paste NoSymbol XF86Paste``
Run Code Online (Sandbox Code Playgroud)

运行xmodmap ~/.Xmodmapnow 完全禁用按钮(或者至少,按下它我没有得到任何结果)。我试过了xmodmap -pke,它打印出来:

keycode 225 = XF86Paste NoSymbol XF86Paste NoSymbol XF86Paste

够奇怪的。所有其他条目的格式类似。我接近解决方案,但仍然有一些奇怪的东西。

编辑 2

我试图运行 xinput (从未听说过这个命令。很棒的东西)。Logitech 有两个条目。这是列出它们中的每一个的输出(id 9 和 10)

Logitech USB Receiver                       id=9    [slave  pointer  (2)]
    Reporting 7 classes:
        Class originated from: 9. Type: XIButtonClass
        Buttons supported: 24
        Button labels: "Button Left" "Button Middle" "Button Right" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right" "Button Side" "Button Extra" "Button Forward" "Button Back" "Button Task" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown"
        Button state:
        Class originated from: 9. Type: XIValuatorClass
        Detail for Valuator 0:
          Label: Rel X
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 9. Type: XIValuatorClass
        Detail for Valuator 1:
          Label: Rel Y
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 9. Type: XIValuatorClass
        Detail for Valuator 2:
          Label: Rel Horiz Wheel
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 9. Type: XIValuatorClass
        Detail for Valuator 3:
          Label: Rel Vert Wheel
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 9. Type: XIScrollClass
        Scroll info for Valuator 2
          type: 2 (horizontal)
          increment: 1.000000
          flags: 0x0
        Class originated from: 9. Type: XIScrollClass
        Scroll info for Valuator 3
          type: 1 (vertical)
          increment: -1.000000
          flags: 0x2 ( preferred )


Logitech USB Receiver                       id=10   [slave  pointer  (2)]
    Reporting 6 classes:
        Class originated from: 10. Type: XIButtonClass
        Buttons supported: 7
        Button labels: "Button 0" "Button Unknown" "Button Unknown" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right"
        Button state:
        Class originated from: 10. Type: XIKeyClass
        Keycodes supported: 248
        Class originated from: 10. Type: XIValuatorClass
        Detail for Valuator 0:
          Label: Rel X
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 10. Type: XIValuatorClass
        Detail for Valuator 1:
          Label: Rel Y
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 10. Type: XIValuatorClass
        Detail for Valuator 2:
          Label: Rel Horiz Wheel
          Range: -1.000000 - -1.000000
          Resolution: 1 units/m
          Mode: relative
        Class originated from: 10. Type: XIScrollClass
        Scroll info for Valuator 2
          type: 2 (horizontal)
          increment: 1.000000
          flags: 0x0
Run Code Online (Sandbox Code Playgroud)

测试设备9对按钮不做任何事情。测试设备 10 可以正常工作,这是我单击时的输出

$ xinput test 10
key press   225 
key release 225 
key press   225 
key release 225 
key press   225 
key release 225
Run Code Online (Sandbox Code Playgroud)

所以看起来鼠标在这方面起到了键盘的作用,但是由于某种原因,xmodmap在接收到225键时并没有做任何事情。

** 编辑 **

我可以确认每次单击按钮时添加keycode 225 = a打印a。所以这个问题似乎与 XF86Paste 的实际处理方式有关。我正在发送它,但它没有粘贴。

mrc*_*ktz 3

要模拟键盘事件,我建议您使用很棒的工具xdotool安装xdotool

xdotool1.通过终端(CTRL++ ALT安装T

sudo apt-get install xdotool
Run Code Online (Sandbox Code Playgroud)

或使用软件中心安装xdotool

2. 创建一个使用 xdotool 的脚本CTRL来模拟和的按键事件v。在终端中:

mkdir -p ~/bin  
gedit ~/bin/fakepaste
Run Code Online (Sandbox Code Playgroud)

将以下内容复制到打开的编辑器窗口中。复制代码后保存,然后关闭:

#!/bin/sh
exec /usr/bin/xdotool key CTRL+V  
EOF
Run Code Online (Sandbox Code Playgroud)

现在使脚本可执行:

chmod +x ~/bin/fakepaste
Run Code Online (Sandbox Code Playgroud)

3. 注销并登录以重新加载您的PATH

4. 创建自定义快捷方式

System Settings,然后去Keyboard,然后Shortcuts

+对话框底部的按钮。为您要创建的快捷方式提供名称,并为命令填写:fakepaste。按OK

在您的新快捷方式旁边您将看到disabled。单击该文本,然后按您想要分配给键盘模拟的键。

您现在应该可以使用搜索键进行粘贴!

  • @iSeth:重点是事实证明罗技鼠标既是键盘又是鼠标。它是一个可以做所有事情的鼠标,除了搜索按钮,它的作用就像一个键盘 (2认同)