Linux
如何將滑鼠鍵映射為鍵盤鍵而不會失去 Linux 的“數字鍵盤”?
我知道如何映射滑鼠點擊
F1
,F2
和F3
(分別左鍵點擊、中鍵點擊、右鍵點擊):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>
(左鍵或右鍵點擊)。你去吧;)
這可以執行為與
xbindkeys
WM 無關編輯:
不知道為什麼這不適用於 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