keymanapp / keyman

Keyman cross platform input methods system running on Android, iOS, Linux, macOS, Windows and mobile and desktop web
https://keyman.com/
Other
372 stars 102 forks source link

feat(mac): rewrite mcompile for macOS 🐘 #11334

Open SabineSIL opened 2 weeks ago

SabineSIL commented 2 weeks ago

fixes #7068 
 see #3345 
see #9384

This is a proposal to rewrite mcompile for macOS.

It will be a standalone implementation for macOS for now which is similar to the standalone implementation for Linux. (#9384)

To achieve this we can reuse most of the code from mcompile-Linux, especially the structure and the .kmx rewriting. We need to adapt the keyboard interrogation though. On Linux we use x11; For macOS we use the Carbon.h library.

Since we keep the structure of the code as it is on Linux, we only have to change the content of several functions, especially those that handle the keyboard interrogation and the mapping between Keycodes/Scancodes and Keyvalues.

Therefore for mcompile-mac we will first set up the the .kmx rewriting, then add the handling of non-deadkeys and in the last step add the handling of deadkeys.

Maybe in a next step we may combine the 3 versions of mcompile for Windows, Linux, macOS into a cross-platform version of mcompile.

@keymanapp-test-bot skip

keymanapp-test-bot[bot] commented 2 weeks ago

User Test Results

Test specification and instructions

User tests are not required

Test Artifacts

gitguardian[bot] commented 2 weeks ago

️✅ There are no secrets present in this pull request anymore.

If these secrets were true positive and are still valid, we highly recommend you to revoke them. Once a secret has been leaked into a git repository, you should consider it compromised, even if it was deleted immediately. Find here more information about risks.


🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.