Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Aenea client window causes the system to freeze when typing into it #150

Open
dylan-chong opened this issue Aug 17, 2017 · 3 comments
Open

Comments

@dylan-chong
Copy link
Contributor

dylan-chong commented Aug 17, 2017

Problem

If you type into the client window, it captures your keystrokes and then sends them to your host OS, which types out in the currently focused window ( i.e. the virtual machine) which means aenea client captures your keystrokes and sends them to your host OS again... This causes my operating system to completely freeze up and I have to force restart my computer.

I am running a OSX 10.11.6 with a Windows 7 Virtual box.

Potential Solution

the client could detect that the same key is being repeated over and over again, for many seconds, and could decide to time out to prevent the infinite loop

@calmofthestorm
Copy link
Member

It would be good to have some kind of work around for this. I like the idea of putting some cooldown logic purely in the client rather than trying to explicitly detect the loop, which would be fragile. Same key over and over again seems like a good approach. Another, even simpler idea would be a simple rate limit in the client -- for example, if you exceed, say, 10 keystrokes in a second, it pauses for a second? Or if the goal is just to prevent wedging the entire system, could even do something like 10 k/s for 30s pauses for 30s -- deeply unlikely anyone would ever legitimately want to do that (if they have a large block of text to move they'd just copy paste it, yes?), and if so they can change the options. Probably want to test it out to tune it to find something intuitive.

@calmofthestorm
Copy link
Member

One subtlety is whether we should drop keystrokes entirely once the rate limit is exceeded, or merely delay them. I'm not sure which is the better approach, though I'm also not convinced it really matters, if the limit is generous enough that you never hit it in regular use.

Finally, one other possibility (I could have sworn we implemented this in the past at some point) would be to have the server refuse to send any keystrokes into the VM window, by looking at its title. Though this would be more fragile, and might interfere with, eg, sending keystrokes into another VM than the dictation one.

@dylan-chong
Copy link
Contributor Author

Another, even simpler idea would be a simple rate limit in the client -- for example, if you exceed, say, 10 keystrokes in a second, it pauses for a second?

I'm not sure the rate even reaches 10 keystrokes in a second on my computer. The rate is relatively slow so I'd rather not rely on the rate being too high

Same key over and over again seems like a good approach

I like this idea too.perhaps we could detect that the same key is being repeated for a certain number of seconds

One subtlety is whether we should drop keystrokes entirely once the rate limit is exceeded, or merely delay them. I'm not sure which is the better approach, though I'm also not convinced it really matters, if the limit is generous enough that you never hit it in regular use.

My idea above would probably not be in encounted and regularly use, so maybe it's okay to just ignore the next repeated keypress

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants