feat(linux): mnemonic layout support 🐘
fixes https://github.com/keymanapp/keyman/issues/7068 see #3345
This is a proposal to rewrite mcompile for Linux. For this we need to query the base keyboard data from the Linux platform, then rewriting the keyboard .kmx using the same approach as is done in mcompile for Windows, but working from the data from the x11 keyboard on Linux.
Ideally, we'd rewrite mcompile to be cross-platform (Windows, Linux, macOS), so that the keyboard interrogation would be separated from the .kmx rewriting, at least to some degree. Nevertheless it would probably be easiest to start from a standalone implementation.
connected to https://github.com/keymanapp/keyman/pull/8558 mcompile - use static tables for windows keyboard data @keymanapp-test-bot skip
Here is the first draft of mcompile for Linux. Before reviewing make sure to read this document in order to
-
not accidentally review unfinished (deadkey related) code
-
learn about differences in files obtained by mcompile-windows and mcompile-linux
I think we need to talk with @mcdurdin Marc on how much similarity we want between mcompile on the different platforms. What do we do about things that make the code nicer but are not really neccesary like moving class definitions to other modules, using a pointer instead of a buffer, renaming functions, variables etc.
Do we change things on Linux only? Now, later or not at all? Do we want to change for all 3 platforms simultaniously later? Something else?
Refactoring and cleanup should be separate to this work -- otherwise the changes get too entangled.
You'll have to update the branch (aka merge master) to get a successful build. CI build related things have changed on master which causes the failures.