如何將 xbindkeys 鍵盤固定為滑鼠按鈕,按住時重複按鍵?

如何將 xbindkeys 鍵盤固定為滑鼠按鈕,按住時重複按鍵?

我有一個 Logitech MX Revolution 滑鼠,上面有一個 XF86Search 鍵盤按鍵。我使用 xdotool 將其映射為 xbindkeys 檔案中的滑鼠中鍵。

此滑鼠點擊不再像按下單一按鈕一樣起作用,而是在按住時在開啟和關閉狀態之間閃爍。這種不良行為使其無法使用。例如,它阻止我在 Graphic 程式中平移畫布,或在 Blender 的視窗中平移。

使用 xev 讀取按鈕映射顯示交替狀態閃爍,類似於鍵盤按下重複鍵。

有人知道問題是什麼嗎?我曾經在全新安裝 Mint 18.2 時遇到過這個問題,但在重新啟動並充電後它就消失了。這次這個解決方案不是答案,因為它在更新 Mint 18.2 時再次發生,並在全新安裝 Ubuntu 時再次發生。

我在鍵盤快捷鍵中解除了搜尋鍵的綁定。

答案1

阻止重複按鍵的解決方案是在 xbindkeys 檔案中新增指令 xset -r keycode。它的行為方式與在設定/鍵盤中停用按鍵重複相同。

到位的程式碼如下所示:

"xset -r 225; xdotool mousedown 2"
    m:0x0 + c:225
    XF86Search

"xdotool mouseup 2"
    m:0x0 + c:225 + release
    XF86Search

雖然這解決了這個問題,但我遇到的真正問題並未解決,即讓搜尋按鈕在 Blender 等程式中完美地充當滑鼠中鍵。由於我不明白的原因,上述解決方案不適用於 Shift 修飾符。

此問題的最佳解決方案是完全放棄 xbindkeys,而是透過新增以下程式碼來啟用中鍵點擊模擬/etc/sysctl.conf

# Enable mouse button emulation
dev.mac_hid.mouse_button_emulation = 1
# Set 2nd button to 217 - the middle button of MX Revolution mouse.
dev.mac_hid.mouse_button2_keycode = 217

此後,我必須創建一個 udev 文件,/etc/udev/rules.d/只要它看到我的加密狗插入,它就會在其中調用腳本sysctl --system。由於某種原因,它默認情況下未啟用,這是我稍後想研究的內容。

這是我的羅技加密狗專用的 udev 檔案:

SUBSYSTEM=="usb", ENV{ID_VENDOR_ID}=="046d", RUN+="/bin/sh  /home/user/mouse-initialize-settings.sh"

相關內容