Giter VIP home page Giter VIP logo

mousemaster's Introduction

mousemaster

Join Discord Chat

  • A keyboard driven interface for mouse manipulation
  • Heavily inspired by warpd and mouseable

DemoInstallationFeaturesNotes

Demo

Hints Demo

mousemaster-hints.mp4

Grid Demo (1/2)

mousemaster-grid.mp4

Grid Demo (2/2)

java_RLSRtDqcg0.mp4

Mouse Movements Demo (1/2)

mousemaster-mouse-movements1.mp4

Mouse Movements Demo (2/2)

mousemaster-mouse-movements2.mp4

Installation

  1. Download mousemaster.exe (a portable executable) from the Release page, or build it from source.
  2. In the same Release page, choose then download one of the existing configuration files:
  3. Place the executable and the configuration file of your choice in the same directory.
  4. Rename the configuration file to mousemaster.properties.
  5. Run mousemaster.exe.
  6. Don't hesitate to open a GitHub Issue or join the Discord if you need help creating your own configuration.

Features

  1. Dynamic configuration: The configuration file is live, automatically reloading upon any saved changes.

  2. Adaptive mouse indicator: The optional and customizable mouse indicator (a plain-color square drawn next to the mouse cursor) changes colors based on mouse activity—idle, moving, button pressing, or scrolling. It repositions itself to stay visible when the mouse is near screen edges.

  3. Multi-screen navigation: mousemaster allows for mouse movement across multiple screens.

  4. Advanced key combinations (key combos): mousemaster offers an advanced level of customization for key combinations. It allows for advanced key combos like "hold alt for 1 second" or "press then release alt, twice in a row".

  5. Left/right key distinction: mousemaster distinguishes between left and right alt/ctrl/shift keys, meaning that left alt and right alt can be used to trigger different commands.

  6. No key is special: All keys are treated the same way, meaning that for example, you can implement a "hold capslock then press enter" combo just like you would implement a "hold alt then press X" combo.

  7. Does not conflict with other applications: mousemaster tries not to clash with other apps using shortcuts. Key events that are not part of any combos are passed onto other apps.

  8. Many-to-many key combo -> command mapping: The same key combo can be used to trigger multiple commands. Multiple key combos can be used to trigger the same command.

  9. Custom modes: Users have to define their own modes, with each mode having its own key combo-to-command map and mouse settings. There is only one predefined mode, the "idle-mode", which has no key combos predefined (this is the "mousemaster is disabled mode").

  10. Mode timeout: A timeout can be set on a mode to switch to another mode after some idle time. This can be used for automatically disabling mousemaster after a while.

  11. Grids: mousemaster incorporates a grid-based navigation system. A grid can cover the active screen or the active window.

  12. Hints: mousemaster incorporates a hint-based navigation system similar to Vimium's. A hint grid can cover the active screen, the active window, or all screens (that last one can be used for screen selection hints). A mouse button click can be automatically triggered after a hint is selected.

  13. Position history hints: mousemaster incorporates position history hints. The position history hints are not limited to a single screen (unlike warpd).

Notes

  • By using mousemaster along with PowerToys and the Vimium-like Tridactyl extension for Firefox, I have been able to not use my mouse (at all) anymore.
  • The two major differences between mousemaster and the existing alternatives (warpd and mouseable), are the way key combos are defined (key presses and key releases instead of "just keys"), and the "create your own modes" approach.
  • The configuration of mousemaster is significantly more complex than warpd and mouseable, mostly because you have to think in terms of key presses and key releases. This is a conscious trade-off for greater flexibility. Detailed debug logs are provided in the console to assist in configuration and troubleshooting.
  • Currently, mousemaster is Windows-only. I have not looked at making it cross-platform simply because all my desktops are Windows based.

mousemaster's People

Contributors

petoncle avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

mousemaster's Issues

Neo Mousekeys' grid only accepts wasd, not hjkl

Setttings:

# Grid is enabled with g, disabled with g or esc.
# Press direction keys to shrink the grid in one direction.
normal-mode.to.grid-mode=+grid
grid-mode.to.normal-mode=+grid | +esc
grid-mode.to.idle-mode=+exit
grid-mode.grid.area=active-screen
grid-mode.grid.area-width-percent=0.99
grid-mode.grid.area-height-percent=0.99
grid-mode.grid.synchronization=mouse-follows-grid-center
grid-mode.grid.line-visible=true
grid-mode.grid.line-color=#FF0000
grid-mode.shrink-grid.up=+up
grid-mode.shrink-grid.down=+down
grid-mode.shrink-grid.left=+left
grid-mode.shrink-grid.right=+right

# Hints are enabled with f, disabled with f or esc.
# Holding leftshift while selecting the hint will trigger a second hint pass with a smaller hint grid
# centered around the mouse to refine the position.
normal-mode.to.hint1-mode=+hint
hint1-mode.to.normal-mode=+esc | +backspace
hint1-mode.to.idle-mode=+exit
hint1-mode.hint.type=grid
hint1-mode.hint.grid-area=active-screen
hint1-mode.hint.active-screen-grid-area-center=screen-center
hint1-mode.hint.grid-cell-width=72
hint1-mode.hint.grid-cell-height=40
hint1-mode.hint.undo=backspace
hint1-mode.hint.mode-after-selection=normal-mode

hint1-mode.to.hint2-1-mode=+slow
# leftshift (slow key) is already pressed in slow mode.
slow-mode.to.hint2-1-mode=+hint
hint2-1-mode.hint=hint1-mode.hint
hint2-1-mode.to.hint1-mode=-slow
hint2-1-mode.to.idle-mode=+exit
hint2-1-mode.hint.mode-after-selection=hint2-2-mode

hint2-2-mode.to.idle-mode=+exit
hint2-2-mode.to.hint1-mode=+backspace
hint2-2-mode.to.normal-mode=+esc
hint2-2-mode.hint=hint1-mode.hint
hint2-2-mode.hint.type=grid
hint2-2-mode.hint.grid-area=active-screen
hint2-2-mode.hint.active-screen-grid-area-center=mouse
hint2-2-mode.hint.grid-max-row-count=4
hint2-2-mode.hint.grid-max-column-count=5
hint2-2-mode.hint.grid-cell-width=22
hint2-2-mode.hint.grid-cell-height=17
hint2-2-mode.hint.selection-keys=h j k l ; a s d f g q w e r t y u i o p z x c v b
hint2-2-mode.hint.font-size=8
hint2-2-mode.hint.mode-after-selection=normal-mode

in vscode everything after ; is greyed out, but editing doesn't seem to do anything.
image

trying to use hjkl in grid mode but only wasd works there. Any ideas?

Problems with installation on Windows 11

Hi,

I did everything as said, changed the file name, clicked mousemaster.exe and such a thing appeared:
Screenshot 2024-05-04 094539

Before I tried Neatmouse, but it had issues with the cursor going too far, then I tried Mouseable, and it worked fine, for more or less one day on both users' profiles on my PC. Then, the next day it worked fine (although it had problems working when the Task Manager window was open), but after changing the user, it stopped working, the program simply does not want to run.

I also must say that in both programs, that is in Mousemaster and Mouseable, Windows and Norton treated them as potential malware and wanted to block them.
Of course I tried restarting the PC, installing the program again, running as administrator and so on.

That's a pity, I started to really like the keyboard navigation:/

The current machine does not support all of the following CPU features that are required by the image

Hello,

Running the provided binary on an Intel Sandy Bridge CPU, mousemaster.exe returns:

The current machine does not support all of the following CPU features that are required by the image: [CX8, CMOV, FXSR, MMX, SSE, SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, POPCNT, LZCNT, AVX, AVX2, BMI1, BMI2, FMA].
Please rebuild the executable with an appropriate setting of the -march option.

I understand that I need to build mousemaster.exe for my CPU, just a heads up if you're not using all of those.

FR: Autodisable / Exclude List

Was unsure if I should just add this to #1 or just open a new FR and I landed on the latter.

I'm wondering if it might be possible to add an "exclude" or "autodisable" when certain programs are active. My use would largely be when using directory opus (crtl+e is "open new explorer" there or in vivaldi (where I use vimium-c).

Unsure if mousemaster should autodisable when the window is active or when the mouse over that window. Is mousemaster based on AHK? Might be possible to use AHK window classes for this.

This is amazing. (+ how to assign space to access normal-/grid-mode without conflict)

Sometimes, by the grace of gods (and some effort searching), you happen upon a truly remarkable github repo with <10 stars, and you start wondering how many other nuggets of gold you have yet to discover. Thanks a bunch!

Anyway, what's the syntax you're using for the config files? Where can I find documentation on it?

I'm trying to set it up so the grid and/or warp activate when I hold Space, and deactivate when I release it again. Seems like "+space" and "-space" works, but not when I define it alone, so I'd like to be able to browse some docs on it.

Move caret

Is it possible with MouseMaster to move only the caret? I use TouchCursor for it now, but it has not been maintained for a long time. I would be extremely happy if MouseMaster could handle it besides the mouse cursor.

Some insights after testing

Hi,
so, after one day of using the tool I have some thoughts, hope they will be useful.

  • the most useful thing would be, imho, introdicng a "temporary deactivation" key, same as in the Mouseable, which there was represented by ]. It means the program is deactivated only for the time the key is pressed. It was useful for me when I had a specific shortcut to do or to write the first letters of the name of a program in the Windows search bar or in similar situations. Here there's no such function, which requires do to several more movements every time I need to write sth.
  • same thing with the temporary activation key, in Mouseable it was double LeftAlt
  • I'm not sure if placing the "deactivate after click" button right near the frequently used scroll buttons is optimal - there's a risk of accidentally switching off the program
  • lastly, a function that seems to be more "premium" and complex than others - that is optional cursor gravitating towards clickable elements. It's a function present f.ex. in software developed for people with shaky hands, but maybe it could be useful also when navigating with the WASD, grid or f number mode.

Thank you for developing this and wishing you further success!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.