Giter Club home page Giter Club logo

xeasymotion's Introduction

XEasyMotion

using keyboard control mouse on MacOS ( OS X ), like keynav.

Download

https://github.com/h2ero/XEasyMotion/releases

Usage

  • h j k l zoom area
  • Shift + h j k l move area
  • Enter click (dismisses grid)
  • c double click (dismisses grid)
  • Space click (retains grid)
  • Shift + Enter right click
  • i hover
  • CMD + i call XEasyMotion
  • u undo
  • o go to previous click position
  • . repeat last click
  • ESC exit

Development

Once XEasyMotion is running, open System Preferences and go to Security & Privacy > Accessibility and either add and check XEasyMotion, or uncheck and check it again. This must be done each time XEasyMotion is built and run since the permissions are lost after building. Keep the System Preferences window open and unlocked to facilitate this process.

Related projects

xeasymotion's People

Contributors

colossatr0n avatar h2ero avatar xtenduke avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar

xeasymotion's Issues

Add hover support

Add a way to trigger a hover event.

I took a stab at this and bound i to Util.moveCursor. After moving the cursor, I tried various combinations of hiding the window, moving the cursor slightly off the center into the transparent region, and enabling/disabling ignoresMouseEvents and acceptsMouseMovedEvents on the MainView.

The issue is that when the cursor is placed by XEasyMotion over the desired element, a hover still isn't triggered. It only gets triggered if the mouse is moved through the trackpad or mouse. Looks like it might be an issue of focus or something, or that the cursor movement wasn't issued directly by the user on the desired application. Not sure what the solution would be.

double-click

It would be SUPER handy to have a keyboard shortcut for "click", meaning click the mouse wherever it already is, without moving it. That way I could move the mouse with your handy tool, then double-click if I want.

Doesn't respect keyboard layout

The virtual key codes reference physical keys on a keyboard, instead of what those keys are actually mapped to. Ex. I have to hit cmd-c to start the application since my layout is Dvorak, and hjkl are in the same locations they are for qwerty. It would be great if this could respect my layout 👍

Awesome project!

.xeasymotionrc doesn't seem to be read

Hello h2ero.
In the first place thank you very much for writing keynav for OSX.
I'm having a small problem with the latest version: it seems that the configuration file (.xeasymotionrc) is not being read at all. I've copied verbatim the provided example in my home directory and given it 644 access privileges, but even the simplest changes (e.g. changing the line color from #f00 to #00f) don't effect in any way the program at runtime. Is there anything else I should do to make it work?

Cheers,

José A. Romero L.
[email protected]

Usability suggestions

This is a pretty cool idea! However, I think the experience can be made better. The current way feels a little too weird. Like I'm wiggling back and forth to get it right, which lacks a feeling of precision. I'm not sure if you intended this to target Vim users in particular, but I'd like to suggest some things to make it easier to use:

+---+---+---+
| 1 | 2 | 3 |
+---+---+---+
| 4 | 5 | 6 |
+---+---+---+
| 7 | 8 | 9 |
+---+---+---+
  1. Split the screen into 9 sections. From the beginning, always start in section 5. I think this will make directional movement feel more natural. The current way feels like I'm pushing and squeezing the cursor, not pointing it.
  2. hjkl highlights a section. If I pressed the wrong key or changed my mind, I don't have to start over.
  3. Taking from :h i_CTRL-X_CTRL-N, pressing ctrl-n will split the highlighted section into 9 more sections. The previous splits are dimmed and stay on the screen. This is repeatable up to a certain point where it's impractical.
  4. Taking from :h i_CTRL-X_CTRL-P, pressing ctrl-p will go back to the previously split sections and restore the selection of the section.
  5. If I move the selection outside of the current section (e.g. press h while on section 4), this would be the equivalent of pressing ctrl-p and moving to the section in the direction of the movement.
  6. Taking from :h complete_CTRL-Y, pressing ctrl-y will perform the click. Holding shift could perform the right click.
  7. Shift + hjkl emulates accelerated mouse movement, but is constrained to the currently selected section.
Start in section 5, press l to move to section 6, then select it with ctrl-n
+-----------+-----------+-----------+    +-----------+-----------+-----------+
|           |           |           |    |###########|###########|###########|
|           |           |           |    |###########|###########|###########|
|     1     |     2     |     3     |    |###########|###########|###########|
|           |           |           |    |###########|###########|###########|
|           |           |           |    |###########|###########|###########|
+-----------+-----------+-----------+    +-----------+-----------+---+---+---+
|           |           |           |    |###########|###########| 1 | 2 | 3 |
|           |           |           |    |###########|###########+---+---+---+
|     4     |     5     |     6     | -> |###########|###########| 4 | 5 | 6 |
|           |           |           |    |###########|###########+---+---+---+
|           |           |           |    |###########|###########| 7 | 8 | 9 |
+-----------+-----------+-----------+    +-----------+-----------+---+---+---+
|           |           |           |    |###########|###########|###########|
|           |           |           |    |###########|###########|###########|
|     7     |     8     |     9     |    |###########|###########|###########|
|           |           |           |    |###########|###########|###########|
|           |           |           |    |###########|###########|###########|
+-----------+-----------+-----------+    +-----------+-----------+-----------+

Miscellaneous

  • When toggling XEasyMotion, it would be nice to have a key that restored the section that was last used so I could perform more cursor actions in the same general area.
  • No animations, or have an option to disable animations. The latency makes me unsure if I'm pressing the right keys if I move at a reasonable pace.
  • Turn off XEasyMotion if the mouse is clicked manually.
  • It would be nice if other keys were disabled while XEasyMotion was enabled.

Right click at wrong place

When I perform a right click, it clicks much lower on the screen (~200px from the bottom). If I "click" lower than that, the click just doesn't happen at all.
I think that could be connected to two monitors, as on the other one this issue doesn't appear.
Thanks for the app!

Feature Request: Cut by quadrant (vs. bisecting)

Would love to see support for the ability to narrow the cursor region by 1/4 in a single keystroke. On my Debian machine, I have keynav set up where T/Y/B/N will select the NW/NE/SW/SE quadrant (respectively); I found it quite easy to adjust to this approach, and it makes using keynav quite fast.

Keynav doesn't explicitly support this keybinding/motion, but it does support custom configurations with multiple actions per keystroke. The relevant section of my keynav config is as follows:

t cut-left,cut-up
y cut-right,cut-up
b cut-left,cut-down
n cut-right,cut-down

Thanks for a great utility! 🙏

Add a license?

Hi, I don't see a license on this code.

Can you consider adding one.

Github explains the matter further on choosalicense.

Thanks for your consideration.

Switching between 2 monitors?

Thank you for providing this great code to the community. It is a really cool project.

I might've missed it somewhere, but is there a way to switch between dual monitors? The grid seems to open in whichever monitor the mouse was in last.

List compatibility with os version / hardware ?

Hi,

I was very excited when I discovered your app. However when I tried to install it, I ran into:

"You can’t open the application “XEasyMotion” because this application is not supported on this Mac."

Config
Hardware: MacBook Pro (15-inch, 2018)
macOS version: Monterey

It could be nice if the README also included a list of compatibility :)

By any chance, is there an update "in the pipe" that will make your app compatible with the config above ?

Thx
M.

Use NSUserDefaults instead of .xeasymotionrc

I was just trying out the latest changes. It took me a little while to figure out I needed to have an .xeasymotionrc file and the Yaml framework. I think NSUserDefaults should be used instead since it's an expected way to store configurations on OS X. It's well supported by the core framework which would make it easier to create a preferences window.

I also think that OS X GUI apps shouldn't clutter the $HOME directory with dot files. If they must, they should at least conform to the XDG Base Directory spec.

Does not work on macOS Ventura

I upgraded to Ventura a couple days ago. I was using xEasyMotion 0.1.3 at the time. I was able to pull up the grid with cmd+i, but on hitting enter no click would register and the grid would stay on the screen. I downloaded and installed the most recent release (0.1.4?), and the same issue persisted, but with 0.1.4 I also could not right click the icon in the top menu bar to quit the application.

This is on a 2019 Macbook Pro (intel).

iOS support?

just wondering if this will work on iOS 15 (ipad Pro) as well?

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.