• mjrusso 8 days ago
    Hi HN! I started building Scoot as an experiment, to see if it was possible to meaningfully reduce my reliance on a physical mouse and trackpad during day-to-day usage of my Mac.

    Quick backstory: I was experiencing pain in my ulnar nerve, which was definitely exacerbated by using a mouse. I was making a lot of changes to get that under control, but was curious if there was also a software-based solution that I could throw into the mix. As it happens, I had recently started using the excellent avy [0] Emacs package, and wondered if some of the ideas in avy could be brought to the operating system level.

    (Quick sidenote: some physical keyboards, e.g. those running the QMK firmware, support mouse emulation, which allows you to move your mouse by pressing keys. I like this feature, but it's not as efficient as what I had in mind.)

    I threw together a prototype, to see what was possible. The initial version subdivided the screen into a grid of equally-sized cells, and assigned each cell a unique character sequence. Type the character sequence, and your mouse cursor moves right to that location. (You can also move the mouse cursor up, down, left, and right, using similar keyboard shortcuts for text editing. The app also lets you click and drag with your keyboard.)

    Over the holiday break, I added a new navigation mode that leverages the Mac OS accessibility APIs (like a screenreader) to find relevant UI elements on the screen (buttons, hyperlinks, etc.). Each element is assigned a unique character sequence, just like the grid-based navigation mode.

    Now, with element-based navigation, Scoot feels much more useful, and I thought it would be worth sharing more broadly in case anyone else finds it useful. (Note that Scoot is Mac only, relying heavily on Apple-provided frameworks.)

    Usage details (and a more detailed description) are available in the README. [1]

    Feedback is much appreciated! (And the app is open source, with a lot of missing features and bugs to squash. All contributions are welcome.)

    [0]: https://github.com/abo-abo/avy [1]: https://github.com/mjrusso/scoot

    • johnsonap 7 days ago
      I want this but just to nudge my cursor a pixel or two while dragging and dropping
      • BayeR0cks 6 days ago
        You're a f*king genius. Thanks, man. Add customization options (color, font size) and take my money.