Linux

如何將滑鼠鍵映射為鍵盤鍵而不會失去 Linux 的“數字鍵盤”?

  • February 10, 2019

我知道如何映射滑鼠點擊F1F2F3(分別左鍵點擊、中鍵點擊、右鍵點擊):

xkbset m   # required, but disable keypad
xmodmap -e "keycode 67 = Pointer_Button1 Pointer_Button1"
xmodmap -e "keycode 68 = Pointer_Button2"
xmodmap -e "keycode 69 = Pointer_Button3"

但這需要我使用xkbset m模式:

4如果我從鍵盤按下,它會將​​游標移到左側。我不需要這個功能,只需要上面的映射。

我試圖用 來弄清楚xdotool,但我不知道如何處理按下/釋放鍵(用於拖放)

xdotool mousedown 1
xdotool mouseup 1

如何使用此模式或如何重新映射所有鍵盤鍵?

請問鍵盤上的數字和算術符號怎麼樣?

還有其他解決方案嗎?

有關 Debian (cinnamon) 和 Archlinux (xfce) 所需的資訊,如果可能,我想要一個不基於視窗管理器的解決方案。

編輯:

嘗試了此解決方案,但我無法使用F1.

~/.xbindkeysrc

"xdotool mousedown 1"
   F1
"xdotool mouseup 1"
   F1 + Release

或者 :

"xdotool mousedown 1"
   m:0x10 + c:67
"xdotool mouseup 1"
   m:0x10 + c:67 + Release

然後 :

xset -r 67

編輯2

嘗試使用actkbd

# actkbd configuration file
<keycode ("67")> :key : :xdotool mousedown 1
<keycode ("67")> :rel : :xdotool mouseup 1

沒有雪茄:/

改編自這裡

W00T!

首先:創建一個腳本click

#!/bin/bash

id=$(
   xinput list |
       awk '/Dell USB Keyboard/{print gensub(/.*id=([0-9]+).*/, "\\1", "1")}'
)
xdotool mousedown $1
while IFS= read -r event; do
   if [[ $event == *release* ]]; then
       xdotool mouseup $1
       exit
   fi
done < <(xinput test $id)

然後在視窗管理器中添加一個新的鍵盤快捷鍵並映射F1到執行/path/to/mouse <1|3>(左鍵右鍵點擊)。

你去吧;)

這可以執行為與xbindkeysWM 無關

編輯:

不知道為什麼這不適用於 archlinux + xfce 4.12 但適用於 Debian9 + Cinnamon

編輯 :

此解決方案效果更好:

.bashrc

xmodmap -e "keycode 67 = Pointer_Button1 Pointer_Button1"
xmodmap -e "keycode 68 = Pointer_Button2"
xmodmap -e "keycode 69 = Pointer_Button3"

作為鍵盤快捷鍵:

#!/bin/bash

id=$(
   xinput list |
       awk '/Dell USB Keyboard/{print gensub(/.*id=([0-9]+).*/, "\\1", "1")}'
)


(
   while read event; do
       if [[ $event == *release* ]]; then
           xkbset -m
           exit
       fi
   done < <(xinput test $id)
) &
xkbset m

引用自:https://unix.stackexchange.com/questions/497676