前面介紹了keyd這個軟體式的QMK,把沒有QMK的鍵盤變成跟QMK鍵盤一樣,不管機械鍵盤或一般鍵盤都能用,特別是筆記型電腦的鍵盤也能有layer、改鍵位、組合。而且跨X11/Wayland/tty,讓你在不同的鍵盤、不同的筆記型電腦(有些筆記型電腦上面的鍵盤位置差很大)、Macbook,都像用同一把鍵盤一樣有相同的鍵位,不必再用眼睛去尋找控制/編輯…等等的鍵位而中斷思路。
本文來介紹如何把鍵盤設成滑鼠一樣的使用。
有時在某些狀況下不想用,或不能用滑鼠,也可以透過軟體方式,用這個就能把鍵盤當滑鼠使用,不論是在X11/Wayland,皆能使用。
https://github.com/jbensmann/mouseless
(最近的程式修改是七個月前)
它是使用go語言寫的,在github的Releases都附了一個compile好的binary執行檔可用,可以不必自己compile.
mouseless的config.ymal跟keyd的default.conf類似,很容易看懂,自行修改後,放在
$HOME/.config/mouseless/config.yaml
devices: 下要用你電腦裡真正顯示的檔名,用
ls /dev/input/by-id/
看一下你的鍵盤是什麼叫做kbd結尾的檔名。
以下是我初次使用的設定檔,我原本把左、中、右三個按鍵放在移動上、下、左、右的鍵的下一排的"n,m,.",比較近。後來發現這樣沒辦法單手進行拖曳,還是把這三個鍵放在左手,押住後右手按上、下、左、右才能進行拖曳。
按住Tab同時再按一下r,可以固定住鍵盤當滑鼠用。
按住Tab跟config裡定義的字母,就是只用一次定義裡的功能,例如往上移動遊標,放掉Tab就打出i。
devices:
- "/dev/input/by-id/usb-XXX_Gaming_Keyboard-event-kbd"
# the default speed for mouse movement and scrolling
baseMouseSpeed: 750.0
baseScrollSpeed: 20.0
# the rest of the config defines the layers with their bindings
layers:
# the first layer is active at start
- name: initial
bindings:
# when tab is held and another key pressed, activate mouse layer
tab: tap-hold-next tab ; toggle-layer mouse ; 500
# when a is held for 300ms, activate mouse layer
#a: tap-hold a ; toggle-layer mouse ; 300
# a layer for mouse movement
- name: mouse
# when true, keys that are not mapped keep their original meaning
passThrough: true
bindings:
# quit mouse layer
q: layer initial
# keep the mouse layer active
r: layer mouse
l: move 1 0
j: move -1 0
k: move 0 1
i: move 0 -1
u: scroll up
h: scroll down
s: speed 4.0
d: speed 0.3
f: speed 0.1
x: button left
c: button middle
v: button right
m: button left
comma: button middle
60: button right
如果要讓一般user有使用權限,必需把他加到input的group
usermod -aG input USER_NAME
另外還要建立一個檔
/etc/udev/rules.d/99-XXXX.rules
可以用以下的script來建立:
sudo tee /etc/udev/rules.d/99-$USER.rules <<EOF
KERNEL=="uinput", GROUP="$USER", MODE:="0660"
KERNEL=="event*", GROUP="$USER", NAME="input/%k", MODE="660"
EOF
以及跟keyd一樣透過systemd來啟動/停止,需要建立
/etc/systemd/system/mouseless.service
讓它被systemctl控制。
以下的PATH跟USER要用你系統裡真實的路徑。
[Unit]
Description=mouseless
[Service]
ExecStartPre=/bin/sleep 2
ExecStart=/PATH/bin/mouseless --config /home/USER/.config/mouseless/config.yaml
[Install]
WantedBy=multi-user.target
目前的使用,發現mouseless先啟動systemctl start mouseless
再執行
systemctl start keyd
如果mouseless的config有錯誤,systemctl status mouseless會失敗,然後keyd功能會失效,這時必需restart keyd,先讓keyd功能回來。修改mouseless的config.yaml,等成功後,中止keyd,等mouseless啟動後,再啟動keyd。
如果要用到「非字母鍵」來定義,需要改用「鍵值」,這時可以執行xev來查出鍵值。
例如原本用v
v: button right
改成句點
.: button right
mouseless執行會失敗,這時執行xev查出句點"." 是60,改成
60: button right
systemctl start mouseless 才能成功。
沒有留言:
張貼留言