mirror of
https://github.com/monkeytypegame/monkeytype.git
synced 2025-02-05 13:27:49 +08:00
Merge pull request #490 from stevep99/master
Improve support for international (ISO) keyboards
This commit is contained in:
commit
34ef0c21ab
2 changed files with 70 additions and 73 deletions
|
@ -4,119 +4,119 @@ const layouts = {
|
|||
"`~","1!","2@","3#","4$","5%","6^","7&","8*","9(","0)","-_","=+",
|
||||
"qQ","wW","eE","rR","tT","yY","uU","iI","oO","pP","[{","]}","\\|",
|
||||
"aA","sS","dD","fF","gG","hH","jJ","kK","lL",";:","'\"",
|
||||
"zZ","xX","cC","vV","bB","nN","mM",",<",".>","/?",
|
||||
"\\|","zZ","xX","cC","vV","bB","nN","mM",",<",".>","/?",
|
||||
" "
|
||||
],
|
||||
dvorak: [
|
||||
"`~","1!","2@","3#","4$","5%","6^","7&","8*","9(","0)","[{","]}",
|
||||
"'\"",",<",".>","pP","yY","fF","gG","cC","rR","lL","/?","=+","\\|",
|
||||
"aA","oO","eE","uU","iI","dD","hH","tT","nN","sS","-_",
|
||||
";:","qQ","jJ","kK","xX","bB","mM","wW","vV","zZ",
|
||||
"\\|",";:","qQ","jJ","kK","xX","bB","mM","wW","vV","zZ",
|
||||
" "
|
||||
],
|
||||
colemak:[
|
||||
"`~","1!","2@","3#","4$","5%","6^","7&","8*","9(","0)","-_","=+",
|
||||
"qQ","wW","fF","pP","gG","jJ","lL","uU","yY",";:","[{","]}","\\|",
|
||||
"aA","rR","sS","tT","dD","hH","nN","eE","iI","oO","'\"",
|
||||
"zZ","xX","cC","vV","bB","kK","mM",",<",".>","/?",
|
||||
"\\|","zZ","xX","cC","vV","bB","kK","mM",",<",".>","/?",
|
||||
" "
|
||||
],
|
||||
colemak_dh:[
|
||||
"`~","1!","2@","3#","4$","5%","6^","7&","8*","9(","0)","-_","=+",
|
||||
"qQ","wW","fF","pP","bB","jJ","lL","uU","yY",";:","[{","]}","\\|",
|
||||
"aA","rR","sS","tT","gG","mM","nN","eE","iI","oO","'\"",
|
||||
"zZ","xX","cC","dD","vV","kK","hH",",<",".>","/?",
|
||||
"zZ","xX","cC","dD","vV","zZ","kK","hH",",<",".>","/?",
|
||||
" "
|
||||
],
|
||||
colemak_dhk:[
|
||||
"`~","1!","2@","3#","4$","5%","6^","7&","8*","9(","0)","-_","=+",
|
||||
"qQ","wW","fF","pP","bB","jJ","lL","uU","yY",";:","[{","]}","\\|",
|
||||
"aA","rR","sS","tT","gG","kK","nN","eE","iI","oO","'\"",
|
||||
"xX","cC","dD","vV","zZ","mM","hH",",<",".>","/?",
|
||||
"zZ","xX","cC","dD","vV","zZ","mM","hH",",<",".>","/?",
|
||||
" "
|
||||
],
|
||||
workman:[
|
||||
"`~","1!","2@","3#","4$","5%","6^","7&","8*","9(","0)","-_","=+",
|
||||
"qQ","dD","rR","wW","bB","jJ","fF","uU","pP",";:","[{","]}","\\|",
|
||||
"aA","sS","hH","tT","gG","yY","nN","eE","oO","iI","'\"",
|
||||
"zZ","xX","mM","cC","vV","kK","lL",",<",".>","/?",
|
||||
"\\|","zZ","xX","mM","cC","vV","kK","lL",",<",".>","/?",
|
||||
" "
|
||||
],
|
||||
turkish_f: [
|
||||
"*+","1!","2\"","3^","4$","5%","6&","7'","8(","9)","0=","/?","-_",
|
||||
"fF","gG","ğĞ","ıI","oO","dD","rR","nN","hH","pP","qQ","wW","xX",
|
||||
"uU","iİ","eE","aA","üÜ","tT","kK","mM","lL","yY","şŞ",
|
||||
"jJ","öÖ","vV","cC","çÇ","zZ","sS","bB",".:",",;",
|
||||
"\\|","jJ","öÖ","vV","cC","çÇ","zZ","sS","bB",".:",",;",
|
||||
" "
|
||||
],
|
||||
MTGAP_ASRT: [
|
||||
"`~","1!","2@","3#","4$","5%","6^","7&","8*","9(","0)","-_","=+",
|
||||
"qQ","wW","lL","dD","bB","jJ","fF","uU","kK","pP","[{","]}","\\|",
|
||||
"aA","sS","rR","tT","gG","hH","nN","eE","oO","iI","/?",
|
||||
"zZ","xX","cC","vV",";:","yY","mM",",<",".>","'\"",
|
||||
"\\|","zZ","xX","cC","vV",";:","yY","mM",",<",".>","'\"",
|
||||
" "
|
||||
],
|
||||
norman: [
|
||||
"`~","1!","2@","3#","4$","5%","6^","7&","8*","9(","0)","-_","=+",
|
||||
"qQ","wW","dD","fF","kK","jJ","uU","rR","lL",";:","[{","]}","\\|",
|
||||
"aA","sS","eE","tT","gG","yY","nN","iI","oO","hH","'\"",
|
||||
"zZ","xX","cC","vV","bB","pP","mM",",<",".>","/?",
|
||||
"\\|","zZ","xX","cC","vV","bB","pP","mM",",<",".>","/?",
|
||||
" "
|
||||
],
|
||||
halmak: [
|
||||
"`~","1!","2@","3#","4$","5%","6^","7&","8*","9(","0)","-_","=+",
|
||||
"wW","lL","rR","bB","zZ",";:","qQ","uU","dD","jJ","[{","]}","\\|",
|
||||
"sS","hH","nN","tT",",<",".>","aA","eE","oO","iI","'\"",
|
||||
"fF","mM","vV","cC","/?","gG","pP","xX","kK","yY",
|
||||
"\\|","fF","mM","vV","cC","/?","gG","pP","xX","kK","yY",
|
||||
" "
|
||||
],
|
||||
QGMLWB: [
|
||||
"`~","1!","2@","3#","4$","5%","6^","7&","8*","9(","0)","-_","=+",
|
||||
"qQ","gG","mM","lL","wW","bB","yY","uU","vV",";:","[{","]}","\\|",
|
||||
"dD","sS","tT","nN","rR","iI","aA","eE","oO","hH","'\"",
|
||||
"zZ","xX","cC","fF","jJ","kK","pP",",<",".>","/?",
|
||||
"\\|","zZ","xX","cC","fF","jJ","kK","pP",",<",".>","/?",
|
||||
" "
|
||||
],
|
||||
QGMLWY: [
|
||||
"`~","1!","2@","3#","4$","5%","6^","7&","8*","9(","0)","-_","=+",
|
||||
"qQ","gG","mM","lL","wW","yY","fF","uU","bB",";:","[{","]}","\\|",
|
||||
"dD","sS","tT","nN","rR","iI","aA","eE","oO","hH","'\"",
|
||||
"zZ","xX","cC","vV","jJ","kK","pP",",<",".>","/?",
|
||||
"\\|","zZ","xX","cC","vV","jJ","kK","pP",",<",".>","/?",
|
||||
" "
|
||||
],
|
||||
qwpr: [
|
||||
"`~","1!","2@","3#","4$","5%","6^","7&","8*","9(","0)","-_","=+",
|
||||
"qQ","wW","pP","rR","fF","yY","uU","kK","lL",";:","[{","]}","\\|",
|
||||
"aA","sS","dD","tT","gG","hH","nN","iI","oO","eE","'\"",
|
||||
"zZ","xX","cC","vV","bB","jJ","mM",",<",".>","/?",
|
||||
"\\|","zZ","xX","cC","vV","bB","jJ","mM",",<",".>","/?",
|
||||
" "
|
||||
],
|
||||
prog_dvorak : [
|
||||
"$~","[%","[7","{5","}3","(1","=9","*0",")2","+4","]6","!8","#`",
|
||||
";:",",<",".>","pP","yY","fF","gG","cC","rR","lL","/?","@^","\\|",
|
||||
"aA","oO","eE","uU","iI","dD","hH","tT","nN","sS","-_",
|
||||
"'\"","qQ","jJ","kK","xX","bB","mM","wW","vV","zZ",
|
||||
"\\|","'\"","qQ","jJ","kK","xX","bB","mM","wW","vV","zZ",
|
||||
" "
|
||||
],
|
||||
dvorak_L : [
|
||||
"`~","[{","]}","/?","pP","fF","mM","lL","jJ","4$","3#","2@","1!",
|
||||
";:","qQ","bB","yY","uU","rR","sS","oO",".>","6^","5%","=+","\\|",
|
||||
"-_","kK","cC","dD","tT","hH","eE","aA","zZ","8*","7&",
|
||||
"'\"","xX","gG","vV","wW","nN","iI",",<","0)","9(",
|
||||
"\\|","'\"","xX","gG","vV","wW","nN","iI",",<","0)","9(",
|
||||
" "
|
||||
],
|
||||
dvorak_R : [
|
||||
"`~","1!","2@","3#","4$","jJ","lL","mM","fF","pP","/?","[{","]}",
|
||||
"5%","6^","qQ",".>","oO","rR","sS","uU","yY","bB",";:","=+","\\|",
|
||||
"7&","8*","zZ","aA","eE","hH","tT","dD","cC","kK","-_",
|
||||
"9(","0)","xX",",<","iI","nN","wW","vV","gG","'\"",
|
||||
"\\|","9(","0)","xX",",<","iI","nN","wW","vV","gG","'\"",
|
||||
" "
|
||||
],
|
||||
azerty : [
|
||||
"`~","&1","é2","\"3","'4","(5","-6","è7","_8","ç9","à0",")°","=+",
|
||||
"aA","zZ","eE","rR","tT","yY","uU","iI","oO","pP","^¨","$£","*µ",
|
||||
"qQ","sS","dD","fF","gG","hH","jJ","kK","lL","mM","ù%",
|
||||
"wW","xX","cC","vV","bB","nN",",?",";.",":/","!§",
|
||||
"<>","wW","xX","cC","vV","bB","nN",",?",";.",":/","!§",
|
||||
" "
|
||||
]
|
||||
}
|
||||
|
|
|
@ -624,65 +624,62 @@ function emulateLayout(event) {
|
|||
}
|
||||
return event;
|
||||
}
|
||||
const qwertyMasterLayout = {
|
||||
Backquote: "`~",
|
||||
Digit1: "1!",
|
||||
Digit2: "2@",
|
||||
Digit3: "3#",
|
||||
Digit4: "4$",
|
||||
Digit5: "5%",
|
||||
Digit6: "6^",
|
||||
Digit7: "7&",
|
||||
Digit8: "8*",
|
||||
Digit9: "9(",
|
||||
Digit0: "0)",
|
||||
Minus: "-_",
|
||||
Equal: "=+",
|
||||
KeyQ: "qQ",
|
||||
KeyW: "wW",
|
||||
KeyE: "eE",
|
||||
KeyR: "rR",
|
||||
KeyT: "tT",
|
||||
KeyY: "yY",
|
||||
KeyU: "uU",
|
||||
KeyI: "iI",
|
||||
KeyO: "oO",
|
||||
KeyP: "pP",
|
||||
BracketLeft: "[{",
|
||||
BracketRight: "]}",
|
||||
KeyA: "aA",
|
||||
KeyS: "sS",
|
||||
KeyD: "dD",
|
||||
KeyF: "fF",
|
||||
KeyG: "gG",
|
||||
KeyH: "hH",
|
||||
KeyJ: "jJ",
|
||||
KeyK: "kK",
|
||||
KeyL: "lL",
|
||||
Semicolon: ";:",
|
||||
Quote: "'\"",
|
||||
Backslash: "\\|",
|
||||
KeyZ: "zZ",
|
||||
KeyX: "xX",
|
||||
KeyC: "cC",
|
||||
KeyV: "vV",
|
||||
KeyB: "bB",
|
||||
KeyN: "nN",
|
||||
KeyM: "mM",
|
||||
Comma: ",<",
|
||||
Period: ".>",
|
||||
Slash: "/?",
|
||||
Space: " ",
|
||||
};
|
||||
const keyEventCodes = [
|
||||
"Backquote",
|
||||
"Digit1",
|
||||
"Digit2",
|
||||
"Digit3",
|
||||
"Digit4",
|
||||
"Digit5",
|
||||
"Digit6",
|
||||
"Digit7",
|
||||
"Digit8",
|
||||
"Digit9",
|
||||
"Digit0",
|
||||
"Minus",
|
||||
"Equal",
|
||||
"KeyQ",
|
||||
"KeyW",
|
||||
"KeyE",
|
||||
"KeyR",
|
||||
"KeyT",
|
||||
"KeyY",
|
||||
"KeyU",
|
||||
"KeyI",
|
||||
"KeyO",
|
||||
"KeyP",
|
||||
"BracketLeft",
|
||||
"BracketRight",
|
||||
"Backslash",
|
||||
"KeyA",
|
||||
"KeyS",
|
||||
"KeyD",
|
||||
"KeyF",
|
||||
"KeyG",
|
||||
"KeyH",
|
||||
"KeyJ",
|
||||
"KeyK",
|
||||
"KeyL",
|
||||
"Semicolon",
|
||||
"Quote",
|
||||
"IntlBackslash",
|
||||
"KeyZ",
|
||||
"KeyX",
|
||||
"KeyC",
|
||||
"KeyV",
|
||||
"KeyB",
|
||||
"KeyN",
|
||||
"KeyM",
|
||||
"Comma",
|
||||
"Period",
|
||||
"Slash",
|
||||
"Space",
|
||||
];
|
||||
const layoutMap = layouts[config.layout];
|
||||
const qwertyMap = layouts["qwerty"];
|
||||
|
||||
const qwertyKey = qwertyMasterLayout[event.code];
|
||||
let mapIndex;
|
||||
for (let i = 0; i < qwertyMap.length; i++) {
|
||||
const key = qwertyMap[i];
|
||||
const keyIndex = key.indexOf(qwertyKey);
|
||||
if (keyIndex != -1) {
|
||||
for (let i = 0; i < keyEventCodes.length; i++) {
|
||||
if (event.code == keyEventCodes[i]) {
|
||||
mapIndex = i;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue