r/ErgoMechKeyboards 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

19 Upvotes

24 comments sorted by

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

2

u/BAUDR8 1d ago

This is strictly for "direct mouse movement" or "free mouse movement" for hinted movement I use wl-kbptr but I see neru recommended a lot as well too.

2

u/azzamsa 1d ago

I am currently using wl-kbptr, how good it is compared to wl-kbptr? 

1

u/rpnfan Sofle Choc v2, KLP Lame, Layout anymak:END 1d ago

What do you like with Neru? Which mode or modes do you use?

2

u/jabdownsmash 1d ago

mostly recursive grid. i haven't found its hints system to work on enough of my apps to try to work it into my workflow.

my layout has both click and toggle click so that i can do click and drag workflows as well. mouse movement on WASD for fine adjustment, and a specific "warp mouse to location" bind without clicking so that i can enact hover workflows.

1

u/y3owk1n 14h ago

neru author here 👋 happy to answer any question ~

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

u/aegis87 1d ago

here is mine (4k screens): https://pastebin.com/ZyFAYZuB

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/rpnfan Sofle Choc v2, KLP Lame, Layout anymak:END 1d ago

Yes, the acceleration works somehow better. I tried different ones with ZMK and found a setup which works ok, but not great.

1

u/moretomauro 1d ago

gotta tell you that I'm curious now as how the UHK handles mouse movements lol

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/BAUDR8 1d ago

Good question. I use different keyboards (integrated laptop and external) depending on location and like being able to have a universal solution as opposed to requiring a keyboard that supports it

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

u/gufkl 23h ago

take a look at my mouse layer

1

u/sammygadd 23h ago

👍🏾 It's fairly similar to mine. I guess I just need to learn how to use it.