Comments (9)
I knew about this already but there is no way to fix it (that I know of). The issue lies with the browser (maybe even the OS). It never send the keyup event to javascript so the engine thinks that the key is still held down.
https://bugs.webkit.org/show_bug.cgi?id=67088
from keyboardjs.
Is it because the Cmd key is used for shortcuts in OSX? If so, is there no way to hijack it?
from keyboardjs.
Might have found something of use. It does require you to cancel the keydown event, so it could cause some issues with other event listeners.
http://stackoverflow.com/questions/902407/how-to-hijack-key-combos-in-javascript
from keyboardjs.
I wish i could just override by blocking event bubbling but it doesn't work because this bug doesn't live in JS land. Its outside of JavaScripts control. I made a JSFiddle demonstrating this.
If you can fix it fork my repo and try it. I will pull your fix. I want this bug gone as mush as you, Its very aggravating for my programmers OCD.
from keyboardjs.
I'll give it a go, though I'm sure you've covered every angle yourself...
from keyboardjs.
Keep me posted. If you have any questions about the code let me know.
from keyboardjs.
I did figure out a way to at least clear the active key list when the window loses focus (find, save, open, etc...)
window.addEventListener('blur', function(event) {
if (activeKeys.indexOf('meta') < 0 && activeKeys.indexOf('select') < 0) return;
activeKeys = [];
activeBindings = {};
});
This doesn't work for things like Cmd+A, but at least it's something... On the other hand, if you can't get this to work for all cases it might be better to leave things as is for the sake of consistency.
I did however noticed that there is a difference wether you press left or the right Cmd key. The right one has keycode 93 while he left one has keycode 91.
from keyboardjs.
Yea, I thought about adding that, But its easy enough to do that out side of the library. It'd rather not do that though because it may cause unexpected behavior and confuse programmers.
As for the two meta keys having different keycodes. I know that they do, but I haven't done anything with this yet. If you look in the library keys object there is a key called _91 that is suppose to make 92 an alias to 91.
The moral of the story is that the keyboard api the DOM uses is a piece of s**t, and you can only dress a pig so well.
from keyboardjs.
Well... Let's just close this issue and leave it be.
from keyboardjs.
Related Issues (20)
- What is the desired behavior of preventRepeat? HOT 6
- For what reason might numeric keypad not work? HOT 3
- Sequence timing HOT 1
- HOW TO CREATE WITH A JAPANESE LOCALE? HOT 1
- Can't bind on a combo that includes a delimiter HOT 3
- Press key on electron HOT 2
- Binding arrows HOT 2
- Add watch targets to the current context rather than setting it globally
- Add integration tests for testing against common oses and browsers.
- Create a new website with proper documentation and demo HOT 3
- Releasing a binding when another activates HOT 1
- unbind keys from a specific context HOT 1
- [BUG] callback gets call incorrectly with incorrect key
- bind() with preventRepeatByDefault=true omits the first firing of pressHandler HOT 3
- ES6 is a breaking change HOT 2
- Secondary key symbols not firing event HOT 1
- Error when starting the program HOT 3
- Error TypeScript type HOT 3
- Bind characters with repetition
- Question: is it possible to unbind browser default shortcut like Command + W / Control + W HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from keyboardjs.