4 ms·
I have a question about the way keyboard shortcuts are implemented: are the keys mostly chosen for their value or their position? For example (and please corre
by bbx 15y ago
I have a question about the way keyboard shortcuts are implemented: are the keys mostly chosen for their value or their position?
For example (and please correct me if I'm mistaken), "Copy" is "C" because it's the first letter, and "X" is "Cut" because it looks like scissors. But "V" was chosen because it's next to the two others, despite not hinting at "Paste" at all.
The reason I come up with that question is that I use a French keyboard (AZERTY) which modifies a dozen of key positions, and it makes some shortcuts hard to execute. Sometimes, they're even impossible to execute. For example, the numbers row needs SHIFT to type a number. In QWERTY, to get a "1" you just type "1" but on AZERTY you type "SHIFT+&".
I'm sure other international keyboard layouts have the same issue and wondered how those who implement those shortcuts deal with that.
- riffraff 15y agoit's been a long time but I seem to recall some software actually had localized shortcuts, e.g. find&replace dialog was ctrl+T in the italian version of MS Word, which I think makes sense for the naming "trova" but I'd expect to be different in the original version. But maybe MS Office is special (cfr: localized VBA syntax) Sadly, checking now on my girlfriends' QWERTZ+Hungarian version of MS Office it seems it's ctrl+F notwithstanding the sheer lack of an F in "Keresés".
- jarek-foksa 15y agoWhen you attach 'keypress' event it will give char code which can be easily converted to sign, e.g.: document.addEventListener('keypress', function(event) { sign = String.fromCharCode(event.charCode); if (sign === 'A') { console.log('Pressed shift+a'); } else if (sign === 'c' && event.ctrlKey) { console.log('Pressed ctrl+c'); } }); I have tested this technique with several layouts (azerty, dvorak, bepo) and it seems to be working fine. For special keys such as enter, esc or backspace you will have to listen for 'keydown' event instead.