@@ -514,6 +514,262 @@ class Keyboard {
514
514
return char ;
515
515
}
516
516
} ;
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
+ } ;
517
773
518
774
// Apply click (and/or touch) handler functions (write to socket and animations)
519
775
let pressKey = ( key ) => {
@@ -551,6 +807,30 @@ class Keyboard {
551
807
cmd = addBar ( cmd ) ;
552
808
container . dataset . isNextBreve = "false" ;
553
809
}
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
+ }
554
834
555
835
556
836
if ( cmd . startsWith ( "ESCAPED|-- " ) ) {
@@ -582,13 +862,28 @@ class Keyboard {
582
862
break ;
583
863
case "CARON" :
584
864
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 ;
592
887
}
593
888
} else if ( cmd === "\n" ) {
594
889
term . writelr ( "" ) ;
0 commit comments