-latn => [qw{.>Latin a b c d e f g h i j k l m n o p q r s t u v w x y z }],
-brai => [qw{.>Braille ⠁ ⠃ ⠉ ⠙ ⠑ ⠋ ⠛ ⠓ ⠊ ⠚ ⠅ ⠇ ⠍ ⠝ ⠕ ⠏ ⠟ ⠗ ⠎ ⠞ ⠥ ⠧ ⠺ ⠭ ⠽ ⠵ }],
-morse => [qw{.>Morse ‧‑ ‑‧‧‧ ‑‧‑‧ ‑‧‧ ‧ ‧‧‐‧ ‐‐‧ ‧‧‧‧ ‧‧ ‧‐‐‐ ‐‧‐ ‧‐‧‧ ‐‐
- ‐‧ ‐‐‐ ‧‐‐‧ ‐‐‧‐ ‧‐‧ ‧‧‧ ‐ ‧‧‐ ‧‧‧‐ ‧‐‐ ‐‧‧‐ ‐‧‐‐ ‐‐‧‧ }],
+use utf8;
+
+sub disptap {
+ map {
+ m/\A(-?)(\d)(\d)/;
+ $1 . '\\' # escape dot
+ . ('.̇' x ($2 < $3 ? $2 : $3)) # min($2,$3) without losing captures
+ . ('.' x ($3 - $2))
+ . (' ̇' x ($2 - $3))
+ } @_
+}
+
+(
+latn => [qw{ a b c d e f g h i j k l m n o p q r s t u v w x y z }],
+latfsuet => [qw{ a b c d e f g h i j k l m n o p q r ſ s t u v w x y z }],
+ase => [qw{ a b c d e f g h i j k l m n o p q r s t u v w x y z }],
+brai => [qw{ ⠁ ⠃ ⠉ ⠙ ⠑ ⠋ ⠛ ⠓ ⠊ ⠚ ⠅ ⠇ ⠍ ⠝ ⠕ ⠏ ⠟ ⠗ ⠎ ⠞ ⠥ ⠧ ⠺ ⠭ ⠽ ⠵ }],
+morse => [map {tr/.-/‧‑/r} qw{
+ .- -... -.-. -.. . ..-. --. .... .. .--- -.- .-.. --
+ -. --- .--. --.- .-. ... - ..- ...- .-- -..- -.-- --..
+ }],
+tap => [disptap(qw{
+ 11 12 13 14 15 21 22 23 24 -24 25 31 32
+ 33 34 35 41 42 43 44 45 51 52 53 54 55
+ })],
+tap => [disptap(qw{
+ 11 12 13 14 21 22 23 24 31 -31 -13 32 33
+ 34 41 42 -13 43 44 15 51 52 53 -25 -31 54
+ })],
+);