#mousemaster: Control your mouse with the keyboard

1 messages Β· Page 1 of 1 (latest)

uncut quiver
calm bluff
#

what

#

looks interesting

upbeat tapir
#

this is crazy

tacit sandal
#

dyslexia advanced

violet valley
#

I'm really enjoying this, I'll probably make a video about how to use this with komorebi and masir

#

Excellent software

uncut quiver
#

Thanks, that's nice to hear! Let me know if you need help configuring it and such. I know that the user friendliness sucks and the docs aren't great (when compared to komorebi at least 😭)

#

Oh I just found out about masir. I need to test both together.

violet valley
#

I just tested with masir, works perfectly 🀞

#

The recommended config worked well for me

#

Normal Mode (leftctrl + e) doesn't work for me though, but once I do alt+e, I am able to press f and g so I guess alt +e leaves me in normal mode?

#

My software stack needs to be started in a specific order for all of the keyboard hooks to not clobber each other

#
  1. whkd
  2. kanata
  3. mousemaster
#

I'll put together a #wpm module for it so it can autostart with the correct ordering on my machine

#
2025-02-16T11:49:35.648-08:00 [main] DEBUG mousemaster.ComboWatcher - currentMode = idle-mode, currentlyPressedComboKeys = [], comboPreparation = [+capslock], partOfComboSequence = false, mustBeEaten = false, commandsToRun = []

I have my caps lock remapped to esc/ctrl with kanata, I was trying to use "esc" as another way to exit normal mode but it wasn't picking up lol, good thing the logs show which key is being registered

uncut quiver
uncut quiver
# violet valley My software stack needs to be started in a specific order for all of the keyboar...

This is a tricky one, I don't think I fully understand yet the behavior of Windows's low level keyboard hooks when multiple apps compete for it. Actually, I'm not sure if whkd uses LL keyboard hooks, and if it doesn't then maybe there's no possible conflict.

I also don't know what the behavior is going to be if you run mousemaster in elevated mode (as admin). I tell people run it as admin because that's how you can get the mousemaster overlay to be displayed on top of everything (including the Windows start menu, the Windows notifications, etc.) and to work with special programs like the task manager.

violet valley
#

So far I'm doing ok running it in normal user mode 🀞

#
[Unit]
Name = "mousemaster"
Description = "A keyboard driven interface for mouseless mouse manipulation"
Requires = ["whkd", "kanata"]

[Service]
Kind = "Simple"
Restart = "OnFailure"
RestartSec = 2
WorkingDirectory = "$USERPROFILE/Downloads"

[Service.ExecStart]
Executable = "$USERPROFILE/Downloads/mousemaster.exe"

[Service.Healthcheck.Process]
DelaySec = 1

This #wpm unit definition is working nicely for me too, makes sure that there are no conflicts for my setup

#
2025-02-16T20:06:03.089524Z  INFO wpm::process_manager: mousemaster: requires whkd
2025-02-16T20:06:03.089735Z  INFO wpm::process_manager: mousemaster: requires kanata
2025-02-16T20:06:03.089807Z  INFO wpm::unit: mousemaster: starting unit
2025-02-16T20:06:03.092869Z  INFO wpm::unit: mousemaster: running pid 27312 liveness healthcheck (1s)
2025-02-16T20:06:04.204647Z  INFO wpm::unit: mousemaster: passed healthcheck
2025-02-16T20:06:09.017126Z  INFO wpmd: received socket message: Status("mousemaster")
❯ wpmctl status mousemaster
● Status of mousemaster:
  Kind: Simple
  State: Running since 2025-02-16 12:06:04.204756600 -08:00
  PID: 27312
  Log: C:\Users\LGUG2Z\AppData\Local\wpm\logs\mousemaster.log
  ExecStart: C:\Users\LGUG2Z\Downloads\mousemaster.exe
  Healthcheck: Liveness check after 1s
  Requires: whkd kanata

Recent logs:
  2025-02-16T12:06:03.182-08:00 [main] INFO  mousemaster.Mousemaster - Loaded configuration file mousemaster.properties with keyboard layout KeyboardLayout[fullName=US, identifier=00000409, shortName=us-qwerty]
  2025-02-16T12:06:05.607-08:00 [main] DEBUG mousemaster.ComboWatcher - currentMode = idle-mode, currentlyPressedComboKeys = [], comboPreparation = [+uparrow], partOfComboSequence = false, mustBeEaten = false, commandsToRun = []
  2025-02-16T12:06:05.767-08:00 [main] DEBUG mousemaster.ComboWatcher - currentMode = idle-mode, currentlyPressedComboKeys = [], comboPreparation = [+uparrow], partOfComboSequence = false, mustBeEaten = false, commandsToRun = []
uncut quiver
#

There have been some improvements since last time I posted an update here:

  • A new IJKL-based config, with some remapping goodies like controlling the arrow keys with alt + ijkl
  • New overlay interface implemented with Qt
  • Animations for the hints
  • Hint prefix in the background (see the video: less clutter, but needs to be tested further to see if it feels good!)
  • Hints can now be configured per screen, for setups with multiple monitors of different sizes, resolutions, or orientations
cosmic parcel
#

vim users like it

faint breach
#

any recommendations on using it with Komorebi or would it work out of the box?

violet valley
#

I use it, it works pretty well!

faint breach
#

Sweet! bye bye keyboard 🀣

uncut quiver
#

You mean bye bye mouse, no? πŸ˜‚

violet valley
#

This actually just gave me an idea to make komorebi work with eye trackers - keyboardless! 😁

violet valley
#

Okay eye trackers are very expensive and my wife will kill me if I get another gadget 🀣

#

But if a company were to send me an eye tracker I could definitely get this working

faint breach
buoyant rampart
#

Just wanted to share something I found a bit confusing. I use a slightly modified version of the neo-mousekeys-ijkl config but noticed shortcuts like Ctrl-Alt-O wasn't working for me in other applications while mousemaster was running. After looking at the logs I eventually figured out the config included leftctrl as well as leftalt - so I could remove leftctrl from key-alias.arrowkeymodifier and I got it working again, but I struggled to figure this out because the image or text on the doc doesn't show that "Ctrl" is even bound to something so I didn't know that it was intercepting ctrl too πŸ˜…
https://github.com/petoncle/mousemaster/blob/77/configuration/neo-mousekeys-ijkl.md

GitHub

Efficiently control your mouse with keyboard inputs for a completely mouseless experience. - petoncle/mousemaster

#

Other than that, I have been using this for a few hours and after getting my config to work well for me (using hjkl instead of ijkl), I'm loving this so far! I can easily see myself become dependent on this πŸ’š

uncut quiver
# buoyant rampart Just wanted to share something I found a bit confusing. I use a slightly modifie...

I see what you mean, good job for understanding what was going on.
In that config, leftalt + I/J/K/L are remapped to the arrow keys. For example, when you press leftalt + J in a text box, the cursor will move one character to the left. If you also press leftctrl (leftctrl + leftalt + J), the cursor will move to the previous word. Obviously, leftalt is intercepted and eaten, and that means that other apps won't be able to use that sequence (ctrl + alt + J) as a shortcut.
But in that config, only I/J/K/L (+ leftalt + leftctrl) would be problematic. I'm not sure why Ctrl + Alt + O is broken for you, unless you replaced I, J, K, or L with O? Feel free to share your config file if you want me to have a look.

buoyant rampart
# uncut quiver I see what you mean, good job for understanding what was going on. In that confi...

Hmm Ctrl + Alt + L was the main problem. I got confused because Ctrl + Alt + O worked on its own, unless I press Ctrl + Alt + L first and then try O without first releasing Ctrl and Alt. But yeah, removing ctrl from arrowkeymodfier solved both for me anyway!

How would I go about disabling alt+hjkl emulating arrow keys?I have another solution for that and I need alt+hjkl keybindings to work in other apps. The only thing I want when mousemaster is in idle mode is for alt-caps to activate it, not block any other keyboard shortcuts πŸ˜… I attached my config for reference

uncut quiver
stoic roverBOT
#

GG @uncut quiver, you just advanced to level 4!

buoyant rampart
stoic roverBOT
#

GG @buoyant rampart, you just advanced to level 2!

buoyant rampart
#

I kept having a problem where keys like Γ₯, Γ€, ΓΆ on my nordic layout kept breaking after a few hours and the only way to fix it was to restart mousemaster. I've been able to replicate it, and it seems to happen if I switch to another keyboard layout and then back. Once it has switched once, it breaks and can't seem to be fixed. It means anything I have bound to Γ₯Àâ etc stops working

In this video I keep pressing ΓΆ. it shows up funny in the log but it works until it swap the keyboard layout to something else and then back, and then changes from the funny character to ;, then I can't get it to work again without restarting

Is there anything I can do as a workaround or do I just have to keep restarting it?

#

mousemaster's popups and stuff still shows to press Γ– but after the bug happens, it doesn't work to press it - nothing happens

uncut quiver
# buoyant rampart I kept having a problem where keys like Γ₯, Γ€, ΓΆ on my nordic layout kept breakin...

I know that there is a problem I could not solve with keyboard layouts which is that I could not find a reliable way to get the active keyboard layout using the Windows API. In the video (thanks for that, very helpful), it looks like it's able to detect when you switch to US but not when you switch back to the Swedish layout, right?
There is one possible workaround. If you add this:

keyboard-layout=sv-qwerty

mousemaster will ignore the current system layout (we're not able to reliably determine what it is anyway) and assume that sv-qwerty is the active layout. sv-qwerty is the name I gave to the Swedish layout. Unfortunately, it was not in the code and I had to add it just now. It's part of release 78: https://github.com/petoncle/mousemaster/releases

buoyant rampart
uncut quiver
#

mousemaster: control your mouse with keyboard inputs only

#

mousemaster: control your mouse with the keyboard

#

mousemaster: Control your mouse with the keyboard

buoyant rampart
#

Hey I'm back with another problem to report, sorry! πŸ˜…

So I recently switched monitor setup and now I have a problem with the hint grid not appearing. It's a bit specific so I'll try to explain:

  • I have 3 monitors. 1 laptop screen, and two 3440x1440 monitors (at 125% zoom).
  • Whenever I've used the hint-grid on one of the ultrawides, it will not appear on the other one. It doesn't matter which one - whichever one I first use it on, it will only appear on that one
  • The 3rd laptop monitor (2560x1600 at 175%) always works no matter what
  • On whichever monitor the hint-grid doesn't work on, it will still work in the hint 2 stage, so whenever I've pressed the first hint key it appears in the 2nd stage

I used to have 4 monitors, the laptop monitor and 3 1080p monitors and it always worked fine there. I've tried restarting the computer, running as admin, and using the default neo-mousekeys-ijkl config file but no luck.

I've attached a video (and a log) but it might be a bit hard to see. You'll see the hint-grid active fine on one of the ultrawides, but then only in the "2nd stage" on the other ultrawide. Then I restart mousemaster and show it working on the reverse screen

Sorry for the long post... Do you have any clue what I can do to fix it? πŸ˜…

uncut quiver
buoyant rampart
# uncut quiver Would you be able to run the same test with trace logs? ```properties logging.le...

Yes, here you go! Video and log from activating it on one monitor where it works, and then on the other monitor, where it doesn't work!

Idk if relevant or not but for the 2nd monitor I sometimes have to press F several times before it seems to register. This seems to only be the first time though, after that it registers right away (but doesn't show the 1st stage hint grid)

uncut quiver
#

Since the 2 screens are the same size, we reuse the hints computed for the first time (this is called the hint cache). The problem seems to be that we are not displaying them at the correct position, I suspect that they're drawn off screen.

buoyant rampart
uncut quiver
#

Sorry I had deployed something but quickly realized that there was a problem with the fix 😳

buoyant rampart
#

@uncut quiver I just tested the new pre-release build and it fixed the issue for me!

#

Oop

#

Well whatever you did fixed the issue for me haha. I'll download the new release when it's ready :)

uncut quiver
#

Hmmm, do both scenarios work? screen 1 -> screen 2, and screen 2 -> screen 1?

buoyant rampart
#

It doesn't show up on the laptop monitor now, until 2nd stage hint grid is active. So it fixed it for my two ultrawides but instead broke it for my laptop screen. For now this is much better for me though so I'm happy!!

uncut quiver
buoyant rampart
stoic roverBOT
#

GG @buoyant rampart, you just advanced to level 3!