Raymii.org
Quis custodiet ipsos custodes?Home | About | All pages | Cluster Status | RSS Feed
Mouse movement via the keyboard with xdotool and xbindkeys
Published: 13-09-2016 | Author: Remy van Elst | Text only version of this article
❗ This post is over eight years old. It may no longer be up to date. Opinions may have changed.
I had a request from a friend to figure out how she could use her mouse via the keyboard. Normally you would use Mouse Keys, but she uses a kinesis freestyle2 which has no numpad. By using xbindkeys together with xdotool we can use our own key combination to move the mouse keys.
Recently I removed all Google Ads from this site due to their invasive tracking, as well as Google Analytics. Please, if you found this content useful, consider a small donation using any of the options below. It means the world to me if you show your appreciation and you'll help pay the server costs:
GitHub Sponsorship
PCBWay referral link (You get $5, I get $20 after you've placed an order)
Digital Ocea referral link ($200 credit for 60 days. Spend $25 after your credit expires and I'll get $25!)
Make sure the packages are installed:
apt-get install xdotool xbindkeys
Use your window manager to let xbindkeys
start at startup.
Append the following to your ~/.xbindkeysrc
file:
# ALT SHIFT
# 10 up
"xdotool mousemove_relative --sync -- 0 -10"
Mod1+Shift+w
# ALT SHIFT S
# 10 down
"xdotool mousemove_relative --sync -- 0 10"
Mod1+Shift+s
# ALT SHIFT A
# 10 left
"xdotool mousemove_relative --sync -- -10 0"
Mod1+Shift+a
# ALT SHIFT D
# 10 right
"xdotool mousemove_relative --sync -- 10 0"
Mod1+Shift+d
# ALT SHIFT Q
# left click
"sleep 1 && xdotool click 1"
Mod1+Shift+q
# ALT SHIFT E
# right click
"sleep 1 && xdotool click 3"
Mod1+Shift+e
This will let you use the WASD
combined with ALT and SHIFT to move the mouse.
The Q
and E
keys can be used to left and right click, but that is with a
delay of one second. Otherwise some applications like firefox interpret the
SHIFT as an instruction to open a new window which is not what we want in this
use case.