keyman icon indicating copy to clipboard operation
keyman copied to clipboard

feat(linux): mnemonic layout support 🐘

Open SabineSIL opened this issue 2 years ago • 3 comments

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

SabineSIL avatar Aug 01 '23 16:08 SabineSIL

User Test Results

Test specification and instructions

User tests are not required

keymanapp-test-bot[bot] avatar Aug 01 '23 16:08 keymanapp-test-bot[bot]

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

SabineSIL avatar Jan 15 '24 19:01 SabineSIL

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.

mcdurdin avatar Jul 02 '24 09:07 mcdurdin

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.

ermshiperete avatar Jul 25 '24 13:07 ermshiperete