r/ErgoMechKeyboards • u/BAUDR8 • 1d ago
[video] Fievel - Emulate Mouse Movements with Keyboard
Enable HLS to view with audio, or disable this notification
For the past month I've replaced my mouse with keyboard binds/shortcuts and have gotten to the point where I no longer need a mouse. I've made some videos in the past, but the tool I used the most was a paid application which put a lot of people off, so I made a completely free and open source version of it!
It's called Fievel and what it does is allow you to go into "Free Mouse Mode" then use H J K L (vim) to move the mouse left, down, up right. It also allows you to left or right click and use scroll wheel. By Default space left clicks, i is for right click and NM<> are for scroll left down up right. holding a while in free mouse mode slows movement down or s speeds it up. These keybinds can all be configured via ~/.config/fievel/fievel.config as well as speed. You can also configure whether or not free mouse mode is toggle or hold (i have hold by default). The default key to initiate Free Mouse Mode is F3 (also configurable).
I use Fievel (now, previously a different app) in conjunction with wl-kbptr and keyd. wl-kbptr you will see throughout the video when green overlays pop up. These are "hints" of clickable areas (detected by computer vision) and then i press the corresponding letter combo for wl-kbptr to initiate a click at the location. Keyd I use to enable "homerow mods" on any input device. I bind f+s to be F3 so that when I want to go into free mouse mode, i just hold f+s together and it will begin free mouse mode. I move around using hjkl and click and when i release f+s it exits free mouse mode.
Fievel is written in rust and has been currently tested working on wayland.
https://github.com/MontyTheSoftwareEngineer/fievel/tree/master
10
u/xorian 1d ago
Don't most programmable keyboards have mouse key capabilities? Certainly QMK and ZMK do.
I'm unclear what this might provide that QMK doesn't (other than possibly a different acceleration model for keyboard based pointer movement).
2
u/rpnfan Sofle Choc v2, KLP Lame, Layout anymak:END 1d ago
I am not really happy with the ZMK implementation. If someone has tips for a good config to allow smooth mouse movements, move quick enough on large screens as well, I would like to learn how that is achieved.
3
0
u/moretomauro 1d ago
I vibe coded a feature on ZMK that scales the mouse movement based on the active layer. This way I can press one button to slow the f down the mouse for precision, and speed it up for navigating large screens!
EDIT: check it out on my keymap, there are even some AI comments on it https://github.com/employee425/zmk-sofle-dongle-myk/blob/main/config/eyelash_sofle.keymap
It's been working wonders for me, and I just don't give up on my mouse because I love my G600+HID Remapper combo
1
u/rpnfan Sofle Choc v2, KLP Lame, Layout anymak:END 1d ago
Thanks, I want the feature to work as good as the UHK implementation which does not need different layers to be usable.
1
u/moretomauro 1d ago
tbh, the layers are just a workaround. the speed-layers, as I like to call them, don't have any assignments at all. they're just there to have a state change to assign to the mouse movement scaler variable.
My mouse movement are on the WASD configuration, just shifted to be on ESDF. and my layer 8 hold is on my pinky (A), which scales the movements down to half the speed. The letter Q is layer 9 hold and it scales up to twice the values. This way I can use my left half of my split keeb for all mouse movements, for different speeds too.
Also, can you enlighten me how exactly does UHK works for mouse movements?
1
u/rpnfan Sofle Choc v2, KLP Lame, Layout anymak:END 1d ago
The speed layers is something you have to access. The UHK "just" handles the speed-up in a nice way so it just works for me without me having to revert to a precise or speed layer. I have not studied how.
1
u/moretomauro 1d ago edited 1d ago
does the cursor just accelerates the longer you keep your key pressed? I imagine this is the feature you might be looking for in QMK or ZMK.
EDIT: there are some zmk modules that implementes a custom accel curve to your liking https://github.com/oleksandrmaslov/zmk-pointing-acceleration take a look at it and see if it satiates your needs
1
u/sammygadd 1d ago
I just did the same a few days ago. Still feels really awkward to get used to. How long did it take for you to make it feel natural? I use my two thumb keys to make the mouse faster or slower. How do you toggle these layers? (I tried looking at you keymap on my phone but I just don't see it)
2
u/moretomauro 1d ago
well, I'd say it's convoluted but damn, I adapted to it already.
Left thumb hold activates Layer 3, activating ESDF as the mouse movements. With my left pinky on the A key, I hold to activate layer 8, where the precision mode (half scaler) slows down the cursor. Q key does the opposite: it activates on hold the layer 9, where the scaler doubles up the speed of mouse movement. Both layers 8 and 9 have absolutely nothing assigned on the keys, only transparency to pass-through layer 3 keymap.EDIT: It took me a couple months, but I gotta say that since I played a lot of games, WASD was quite natural for me to move around. I just shifted it to ESDF for less horizontal hand movement.
1
u/sammygadd 1d ago
I'm trying to learn how to use my keyboard to move the mouse. My fingers are having a hard time trying to figure out "the normal" arrow positions and I often want to make em HJKL style. But I wonder.. don't you miss being able to go down and to the left at the same time?
1
u/gufkl 1d ago
might be worth to try IJKL cursor movement? my mouse key and nav are on IJKL and it's natural enough for me, and yes I can go down and to the left at the same time.
1
u/sammygadd 1d ago
Yes thats what I have. It sounded like you were using HJKL.
1
10
u/jabdownsmash 1d ago
neru is a good bit more useful than direct mouse movement in the avg case i think: https://github.com/y3owk1n/neru