Open lud opened 9 months ago
This feature would be reminiscent of the "Compose key" that is available on Linux systems.
Here is a list of X11 dead key and compose key combinations (in this situation we are looking for those that include Multi_key
).
The only difference is that, when using the Compose key, one is supposed to input it first and then type in the keys for the character, so Compose o c
makes the copyright symbol, Compose a e
makes æ
, Compose ^ j
makes ĵ
, etc.
Yeah, I'd like to support this, I'm just not sure we're the correct place to maintain that kind of mapping table. Maybe if we can yoink something from CLDR or X11...
For comparison, this is how the developers of Unexpected Keyboard do character composing -- seems like they just have a list of predefined characters for specific accents, and if that's unavailable, either plug in a composing character codepoint or return failure.
As for the X11 database, it's usually taken from the libX11
source codes. In the libX11
source code file, the /libX11-1.8/nls/en_US.UTF-8/Compose.pre
file contains most of the compose key definitions (including ones for non-Latin languages).
Online link to the Xlib compose definition: https://gitlab.freedesktop.org/xorg/lib/libx11/-/blob/041b5291f0956c5cda5054be2981c0d02b009a4c/nls/iso8859-1/Compose.pre
I'm not sure if this will be useful, but I thought I'd include it in the discussion for completeness. @lud mentioned not being able to find a table of all the combinations supported in MessagEase, but I found one in the "How To..." section in the app and include it at the bottom of this comment.
While I suppose that some of these (like the accented letters) might be covered by an external library that could be relied upon by Flickboard, I think that others (like the maths symbols, punctuation, and Greek letters) are custom to MessagEase. For instance to complete @lud's example, typing a capital lambda is done with L and A.
I don't particularly mind if the required combination changes, but I think it would be nifty to be able to type some of these symbols with Flickboard.
I know that vim and emacs use RFC1345 (with their own modifications) for making special characters, which has a lot of symbols.
It does have a few downsides that you may want to think about:
@lverweijen
Yeah, hm.. that's a pretty big downside. But we can always make the source an option or something, and as you say it doesn't have to be the only way to enter characters.
@Phidica
Thanks for the list! Looking at it, it seems like there are basically two different "patterns" going on: "Character with accent" (a¨ -> ä) and "smash these two regular characters together" (ae -> æ). I think, ideally, the former should hopefully already be solved by dead letters/zalgo mode, so the latter is probably what I'd focus on for this.
Here's the info from #238, so that it doesn't get lost:
In Messagease, the ‹A› button's top-left swipe combines or changes characters to be special versions of themselves.
Of particular note is the ability to type Greek letters by typing (typically) the first two letters of their names, followed by this special key. Example: m + u +
C
== µ. Greek letters are useful when typing certain things, like some mathematical constants (φ, τ) or physics terms (Δ, γ radiation) or medical terms (5α-reductase, ERβ), or for units involving the "micro" prefix (µs).Also of note is the ability to type several special characters that are not otherwise possible to type on the keyboard. Some examples: ð, æ, ç, œ, ø, ß. ‹ç› and ‹œ› are essential when typing French (which is something I occasionally do); ‹ß› for typing German (also something I occasionally do); ‹ø› for Norwegian (which is on my list to learn); ‹æ› for Norwegian, Old English, and others; ‹æ›+‹œ› for fancy Latin and pretentious English (ex: encyclopædia); ‹Ð›/‹ð› for Old English and Norse (Messagease, sadly, lacks Thorn.); etc. These are also handy to have for IPA.
Atm, these letters are, to my knowledge, inaccessible to me on Flickboard, but I was able to type all of this on the English Messagease keyboard.
In addition to typing "x
C
" to get these characters (which can require multipleC
s), some can be yielded more-directly: ‹ø› can be typed as "o/C
", ‹æ› as "aeC
", ‹œ› as "oeC
", ‹ç› as "ccC
".The way I would suggest implementing this button for FlickBoard, is to only implement mutations for two-letter combinations and the 26 standard Latin letters. Example of what I mean: Messagease cycles various special characters when
C
is pressed on a litany of arbitrary letters. "cC
" is ‹¢›, "¢C
" is ‹©›, "©C
" is ‹č›, and so-on. It would be much simpler if there were only one level ofC
for each of the 26 letters, leaving additional special characters to be yielded via digraphs. "coC
", for example, yields ‹©›, thus making "¢C
" unnecessary.Here is a full list of what I would like for single letter substitutions: (I call out any deviations from Messagease's setup, but I don't call out omissions.)
c>¢
d>ð/D>Ð (instead of d>ď>ð/D>Ď>Ð)
f>ƒ
F>₣ (instead of f>ƒ>₣)
i>ı (instead of i>ǐ>ı)
I>İ (instead of I>Ǐ>İ)
l>ł/L>Ł (new substitution; needed for Polish)
o>¤/O>¤ (instead of o>œ>¤)
p>¶/P>¶ (capital version is new)
s>ſ (new substitution; needed for typing archaïcally)
S>§
t>þ/T>Þ (new substitutions; needed for Icelandic, Old English, Old Norse, and some related languages)
And for digraphs:
aa>å (new digraph, alternative to a°>å)
ae>æ/AE>Æ
cc>ç/CC>Ç
c,>ç/C,>Ç (new digraphs, alternative to cc>ç)
co>©/CO>© (capitalized version is new)
d'>ď (replaces d>ď)
l'>ľ (replaces l>ľ)
oe>œ/OE>Œ
oo>∞
o/>ø & O/>Ø
0/>Ø (I think that's the empty set, not Norwegian/Danish ‹Ö›) (new digraph, replaces h-down-up)
pt>₧/Pt>₧ (new digraphs, replaces p>¶>₧)
ro>®/RO>® (instead of ro>ρ/RO>Ρ and O>Œ>®)
ss>ß
sh>∫ (new digraph, replaces s>š>ş>ŝ>ß>∫)
s,>ş/S,>Ş (new digraphs, replaces s>š>ş)
t'>ť (new digraph, replaces t>ť)
t,>ţ/T>Ţ (new digraphs, replaces t>ť>ţ/T>™>Ť>Ţ)
tm>™/TM>™ (new digraphs, replaces T>™)
Plus all the digraphs needed for the Greek letters. All except the following are just the first two letters of their names (capitalized for capitals):
ON/on>Ο/ο (Omicron, to avoid ambiguïty with Omega; same as Messagease)
Messagease used ro>ρ/RO>Ρ instead of rh/RH; recommend using rh/RH to avoid inconsistencies between RO>®/CO>©.
The
C
button, when pressed, would first try to match a digraph. If a match is found, it replaces the digraph with the new character. If the match is not found, it tries to match a single letter transformation. If a match is found, it replaces the letter with its special form. If no match is found,C
does nothing.There are many substitutions I would like to add (particularly in regards to the IPA, which would be amazeballs to be able to type), but I kept this post limited to those special characters that Messagease can already type with its
C
key, plus ł/Ł and þ/Þ (painful omissions).
I didn't know about the Zalgo key when I wrote the above. I wrote the below after learning about it:
It is much slower to stretch all the way over to the Zalgo key, and missing it means hitting the home key or the app switcher (depending on the horizontal position of the keyboard).
The compose key on Messagease is quite fast and comfortable to hit because it's on one of the 9 main keys. So food for thought I guess. I do linguistics and end-up using that key a fair bit sometimes. Would prefer if the Zalgo key were similarly accessible.
Context
I don't see if this is possible at the moment, but I think no.
Describe your suggested feature
In messageease, on the top-left square of the 9-grid, there is a
©
character that will enable combinations of letters.So for instance
cc©
becomesç
,<<©
becomes«
, etc..There are a lot, for instance I could do the "lambda" symbol for maths, but I can't remember the invocation. I cannot find the list of all possible combinations.
Would you consider implementing this feature?
Other details
No response
Acknowledgements