People with completely custom non-english layouts, how do you program them?
Especially on QMK/TMK, especially non-english ones.
Do you mangle the QWERTY layout to fit your needs, especially when there is no correspondence between QWERTY and you language's layout or do you send directly Unicode characters?
I'm working on a French, Bépo-inspired, completely custom layout with full access to diacritics and ligatures. The keyboard must be OS-agnostic as I'm using Linux at home and Windows at work, and should be completely compatible with the AZERTY layout as understood by the OS and need no install or configuration on the PC as work PCs are usually completely locked-down and don't allow input layout modification.
Letters like é, è, à, ç, and ù are directly accessible on the AZERTY keyboard, so a bit of mangling should work (despite ù being used in a single word in the entire language but whatevs)
My concerns are:
ê, ë and so on are pretty common but need a dead key to be typed. Not ideal. It might be possible with a macro, but Unicode might be more efficient.
æ and œ are completely absent from AZERTY and cannot even be directly typed on windows despite appearing on very common words like cœur or bœuf. They are hidden behind AltGr-A and AltGr-O in Linux tho. Unicode is a must.
I think most people map their keyboards to something based upon US QWERTY and set their input language in the OS to their language layout. that means no faffing around with unicode. e.g. QMK's KC_SEMI is ; in English (United States) locale but å in a nordic layout. There's not really a fully portable way to achieve it all on-keyboard because the means to input unicode differs between operating systems. However, you can use QMK's unicode support but you will also need to include some keys that toggle between which OS you're plugged into to have it work.
For portability you are better off using whatever the most widely-used means of typing your given characters are across OSs, so if Linux/Mac/Windows all have the same deadkey combination for ë and ê on their built-in AZERTY, use a macro that types that. As for æ and œ then yeah, you might be shit out of luck with a properly agnostic portable system. Unicode stuff, as I said above, is not OS agnostic so you will have to toggle a setting based on which OS you are using at the time. I don't think there's a way to detect that from the host unless there is a hueristic I'm unaware of.
Good luck, I hope you come up with a low-friction solution.
if Linux/Mac/Windows all have the same deadkey combination for ë and ê on their built-in AZERTY, use a macro that types that.
They do actually. Macro it is then.
For the ligatures, I might actually map AltGr-O and AltGr-A to some keys and Alt+0156 and Alt+0230 to adjacent keys, so there is no need to maintain layer spaghetti just for two (useful but relatively uncommon) characters.
A whole new can of worms can be opened too with accented, uppercase letters.
I'm gonna scale my ambitions down. Let's not be more royalist than the king as we say in French, I will aim for parity with the AZERTY keyboard and we'll see from there.
I need compatibility for macOS and iOS.
I use macros to type out deadletter combinations for äöüß.
Works decent.
I still need to work on shift for the capitalized versions, but I have other ways to type them.
My keyboard use bepo key, but bepo need to be activated on windows, which I can't do.
I've tried to use azerty keys but it was a real pain to setup. I gave up using bepo on this computer, but if you find a solution I'm interested !
Every language + keyboard setting combination in Windows has different behaviours. I recommend using the default settings for your region, because that allows you to still use a standard keyboard the way you are used to (your laptop keyboard for example) - in my case US-international layout + Dutch or English(Netherlands) language settings. Based on that keyboard behaviour I make my QMK keymap.
For diacritics I used the following approach:
tap [ ' ], then tap [ e ] results in 'e
hold [ ' ], then tap [ e ] results in é
same for all other diacritics (" ë, ` è, ^ ê, ~ ñ)
I found that a lot more workable than the default dead key behaviour of the Dutch keyboard settings. (allows to type é easily without making 'e annoying to type or vice versa)
how to write that in QMK depends on your language and keyboard settings. Or you could base your QMK code on the ASCII approach (typing ASCII number on numpad while holding alt); I think (not 100% sure) that works universally for all language and keyboard settings. I just use windows though, so for other OS's I'm clueless..
If you are allowed to configure the keymap on all your host systems, the way to go is to choose a keymap having all required characters (for instance, standard Bépo), install it everywhere, and have your keyboard produce (sequences of) keycodes depending on this.
An alternative would be to input Unicode characters via XCompose under Linux and WinCompose under Windows. The latter claims to be compatible with the former, so it's worth a try (but you need to be allowed to install WinCompose, of course!)
Other Unicode input methods based on alt+number/ctrl+shift+U+number/... all are OS specific unfortunately.
Edit: btw, PM me if you want my QMK macros for dead key based diacriticized characters.