Skip to content
This repository was archived by the owner on Oct 22, 2021. It is now read-only.

Commit 6ab7801

Browse files
author
Phuntsok Drak-pa
committed
Added remaining diacritics and greek chars available in current bépo layout
1 parent 06ce11e commit 6ab7801

File tree

1 file changed

+302
-7
lines changed

1 file changed

+302
-7
lines changed

src/classes/keyboard.class.js

Lines changed: 302 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -514,6 +514,262 @@ class Keyboard {
514514
return char;
515515
}
516516
};
517+
let addTilde = (char) => {
518+
switch (char) {
519+
case "a":
520+
return "ã";
521+
case "A":
522+
return "Ã";
523+
case "e":
524+
return "ẽ";
525+
case "E":
526+
return "Ẽ";
527+
case "i":
528+
return "ĩ";
529+
case "I":
530+
return "Ĩ";
531+
case "n":
532+
return "ñ";
533+
case "N":
534+
return "Ñ";
535+
case "o":
536+
return "õ";
537+
case "O":
538+
return "Õ";
539+
case "u":
540+
return "ũ";
541+
case "U":
542+
return "Ũ";
543+
case "v":
544+
return "ṽ";
545+
case "V":
546+
return "Ṽ";
547+
case "y":
548+
return "ỹ";
549+
case "Y":
550+
return "Ỹ";
551+
case "ê":
552+
return "ễ";
553+
case "Ê":
554+
return "Ễ";
555+
default:
556+
return char;
557+
}
558+
};
559+
let addMacron = (char) => {
560+
switch (char) {
561+
case "a":
562+
return "ā";
563+
case "A":
564+
return "Ā";
565+
case "e":
566+
return "ē";
567+
case "E":
568+
return "Ē";
569+
case "g":
570+
return "ḡ";
571+
case "G":
572+
return "Ḡ";
573+
case "i":
574+
return "ī";
575+
case "I":
576+
return "Ī";
577+
case "o":
578+
return "ō";
579+
case "O":
580+
return "Ō";
581+
case "u":
582+
return "ū";
583+
case "U":
584+
return "Ū";
585+
case "y":
586+
return "ȳ";
587+
case "Y":
588+
return "Ȳ";
589+
case "é":
590+
return "ḗ";
591+
case "É":
592+
return "Ḗ";
593+
case "è":
594+
return "ḕ";
595+
case "È":
596+
return "Ḕ";
597+
default:
598+
return char;
599+
}
600+
};
601+
let addCedilla = (char) => {
602+
switch (char) {
603+
case "c":
604+
return "ç";
605+
case "C":
606+
return "Ç";
607+
case "d":
608+
return "ḑ";
609+
case "D":
610+
return "Ḑ";
611+
case "e":
612+
return "ȩ";
613+
case "E":
614+
return "Ȩ";
615+
case "g":
616+
return "ģ";
617+
case "G":
618+
return "Ģ";
619+
case "h":
620+
return "ḩ";
621+
case "H":
622+
return "Ḩ";
623+
case "k":
624+
return "ķ";
625+
case "K":
626+
return "Ķ";
627+
case "l":
628+
return "ļ";
629+
case "L":
630+
return "Ļ";
631+
case "n":
632+
return "ņ";
633+
case "N":
634+
return "Ņ";
635+
case "r":
636+
return "ŗ";
637+
case "R":
638+
return "Ŗ";
639+
case "s":
640+
return "ş";
641+
case "S":
642+
return "Ş";
643+
case "t":
644+
return "ţ";
645+
case "T":
646+
return "Ţ";
647+
default:
648+
return char;
649+
}
650+
};
651+
let addOverring = (char) => {
652+
switch (char) {
653+
case "a":
654+
return "å";
655+
case "A":
656+
return "Å";
657+
case "u":
658+
return "ů";
659+
case "U":
660+
return "Ů";
661+
case "w":
662+
return "ẘ"; // capital w with overring not supported on bépo layout apparently
663+
case "y":
664+
return "ẙ"; // same for capital y with overring
665+
default:
666+
return char;
667+
}
668+
};
669+
let toGreek = (char) => {
670+
switch (char) {
671+
case "b":
672+
return "β";
673+
case "p":
674+
return "π";
675+
case "P":
676+
return "Π";
677+
case "d":
678+
return "δ";
679+
case "D":
680+
return "Δ";
681+
case "l":
682+
return "λ";
683+
case "L":
684+
return "Λ";
685+
case "j":
686+
return "θ";
687+
case "J":
688+
return "Θ";
689+
case "z":
690+
return "ζ";
691+
case "w":
692+
return "ω";
693+
case "W":
694+
return "Ω";
695+
case "A":
696+
return "α";
697+
case "u":
698+
return "υ";
699+
case "U":
700+
return "Υ";
701+
case "i":
702+
return "ι";
703+
case "e":
704+
return "ε";
705+
case "t":
706+
return "τ";
707+
case "s":
708+
return "σ";
709+
case "S":
710+
return "Σ";
711+
case "r":
712+
return "ρ";
713+
case "R":
714+
return "Ρ";
715+
case "n":
716+
return "ν";
717+
case "m":
718+
return "μ";
719+
case "y":
720+
return "ψ";
721+
case "Y":
722+
return "Ψ";
723+
case "x":
724+
return "ξ";
725+
case "X":
726+
return "Ξ";
727+
case "k":
728+
return "κ";
729+
case "q":
730+
return "χ";
731+
case "Q":
732+
return "Χ";
733+
case "g":
734+
return "γ";
735+
case "G":
736+
return "Γ";
737+
case "h":
738+
return "η";
739+
case "f":
740+
return "φ";
741+
case "F":
742+
return "Φ";
743+
default:
744+
return char;
745+
}
746+
};
747+
let addIotasub = (char) => {
748+
switch (char) {
749+
case "o":
750+
return "ǫ";
751+
case "O":
752+
return "Ǫ";
753+
case "a":
754+
return "ą";
755+
case "A":
756+
return "Ą";
757+
case "u":
758+
return "ų";
759+
case "U":
760+
return "Ų";
761+
case "i":
762+
return "į";
763+
case "I":
764+
return "Į";
765+
case "e":
766+
return "ę";
767+
case "E":
768+
return "Ę";
769+
default:
770+
return char;
771+
}
772+
};
517773

518774
// Apply click (and/or touch) handler functions (write to socket and animations)
519775
let pressKey = (key) => {
@@ -551,6 +807,30 @@ class Keyboard {
551807
cmd = addBar(cmd);
552808
container.dataset.isNextBreve = "false";
553809
}
810+
if (container.dataset.isNextTilde === "true") {
811+
cmd = addTilde(cmd);
812+
container.dataset.isNextTilde = "false";
813+
}
814+
if (container.dataset.isNextMacron === "true") {
815+
cmd = addMacron(cmd);
816+
container.dataset.isNextMacron = "false";
817+
}
818+
if (container.dataset.isNextCedilla === "true") {
819+
cmd = addCedilla(cmd);
820+
container.dataset.isNextCedilla = "true";
821+
}
822+
if (container.dataset.isNextOverring === "true") {
823+
cmd = addOverring(cmd);
824+
container.dataset.isNextOverring = "false";
825+
}
826+
if (container.dataset.isNextGreek === "true") {
827+
cmd = toGreek(cmd);
828+
container.dataset.isNextGreek = "false";
829+
}
830+
if (container.dataset.isNextIotasub === "true") {
831+
cmd = addIotasub(cmd);
832+
container.dataset.isNextIotasub = "false";
833+
}
554834

555835

556836
if (cmd.startsWith("ESCAPED|-- ")) {
@@ -582,13 +862,28 @@ class Keyboard {
582862
break;
583863
case "CARON":
584864
container.dataset.isNextCaron = "true";
585-
break;
586-
case "BAR":
587-
container.dataset.isNextBar = "true";
588-
break;
589-
case "BREVE":
590-
container.dataset.isNextBreve = "true";
591-
break;
865+
break;
866+
case "BAR":
867+
container.dataset.isNextBar = "true";
868+
break;
869+
case "BREVE":
870+
container.dataset.isNextBreve = "true";
871+
break;
872+
case "MACRON":
873+
container.dataset.isNextMacron = "true";
874+
break;
875+
case "CEDILLA":
876+
container.dataset.isNextCedilla = "true";
877+
break;
878+
case "OVERRING":
879+
container.dataset.isNextOverring = "true";
880+
break;
881+
case "GREEK":
882+
container.dataset.isNextGreek = "true";
883+
break;
884+
case "IOTASUB":
885+
container.dataset.isNextIotasub = "true";
886+
break;
592887
}
593888
} else if (cmd === "\n") {
594889
term.writelr("");

0 commit comments

Comments
 (0)