From 93aaaaac094ed069c547fe37996fb627fbc02ae2 Mon Sep 17 00:00:00 2001 From: Steve P Date: Wed, 28 Oct 2020 17:58:36 +0000 Subject: [PATCH] Improved support for International (ISO) keyboards; fix Colemak-DH layouts --- public/js/layouts.js | 34 +++++++------- public/js/script.js | 109 +++++++++++++++++++++---------------------- 2 files changed, 70 insertions(+), 73 deletions(-) diff --git a/public/js/layouts.js b/public/js/layouts.js index 374741563..aaa1931f5 100644 --- a/public/js/layouts.js +++ b/public/js/layouts.js @@ -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",",?",";.",":/","!§", " " ] } diff --git a/public/js/script.js b/public/js/script.js index 6fff3d13a..f441f039a 100644 --- a/public/js/script.js +++ b/public/js/script.js @@ -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; } }