Relates to #3935. This switches Java apps into legacy mode. However, Java itself will need patching to support Keyman, as it makes assumptions about input methods, including matching specific input methods by name, before enabling its complex text support. I am in process of submitting a bug report and may try and submit a patch (although the process seems a little convoluted). It requires a change to a single file, AWTView.m, with the following diff (against JDK 16.0): diff --git a/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTView.m b/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTView.m index 3e80b5a6cf3..2ae1f4f3f12 100644 --- a/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTView.m +++ b/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTView.m @@ -263,6 +263,16 @@ - (void) keyDown: (NSEvent *)event { fProcessingKeystroke = YES; fKeyEventsNeeded = YES; + if([(NSString *)kbdLayout containsString:@"keyman"]) { + // Keyman handles all key events; none should be + // passed through as default before Keyman processes them + fKeyEventsNeeded = NO; + } // Allow TSM to look at the event and potentially send back NSTextInputClient messages. [self interpretKeyEvents:[NSArray arrayWithObject:event]]; @@ -960,7 +989,9 @@ - (void) insertText:(id)aString replacementRange:(NSRange)replacementRange if ((utf16Length > 2) || ((utf8Length > 1) && [self isCodePointInUnicodeBlockNeedingIMEvent:codePoint]) || - ((codePoint == 0x5c) && ([(NSString *)kbdLayout containsString:@"Kotoeri"]))) { + ((codePoint == 0x5c) && ([(NSString *)kbdLayout containsString:@"Kotoeri"])) || + ([(NSString *)kbdLayout containsString:@"keyman"]) + ) { aStringIsComplex = YES; } |
||
|---|---|---|
| .github | ||
| android | ||
| common | ||
| developer | ||
| docs | ||
| ios | ||
| linux | ||
| mac | ||
| oem/firstvoices | ||
| resources | ||
| web | ||
| windows/src | ||
| .editorconfig | ||
| .flake8 | ||
| .gitignore | ||
| configure-repo.sh | ||
| crowdin.yml | ||
| HISTORY.md | ||
| lerna.json | ||
| linux.code-workspace | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| TIER.md | ||
| VERSION.md | ||
Keyman makes it possible for you to type in any language on Windows, macOS, Linux, iPhone, iPad, Android tablets and phones, and even instantly in your web browser. Create keyboard layouts with Keyman Developer and share them with the community in the keyboards repository. The Keyman Community have already contributed keyboard layouts for over 1,500 languages!
Keyman is an open source project distributed under the MIT license.
Get Involved
Development Status on status.keyman.com
| Platform | Alpha | Beta | Stable |
|---|---|---|---|
| Windows | |||
| macOS | |||
| Web | |||
| Android | |||
| iOS | |||
| Linux |
Getting Started
Desktop Platforms
Web & Mobile Platforms
Release Types
Each platform maintains multiple types of releases:
- Stable: A released version. On a
stableorstable-<version>branch. - Beta: A version that is nearing full "stable" release. On the
betabranch. - Alpha: Contains the very latest code. These versions are published daily whenever the code changes. On
masterbranch.
License
Copyright (c) 2018-2020 SIL International. All rights reserved.
Licensed under the MIT License.
Keyman for Linux is licensed under the MIT License apart from ibus-kmfl which is licensed under the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
Notes for Contributors
When cloning this repo for local development on a Windows machine, take care not to place it overly deep in your file system.
Some of the paths for compilation can push character lengths around 160 characters long, while certain operations on Windows systems may be limited to paths of 260 characters or less.
For example, git clean on Windows with msys is limited due to dependence on older Windows APIs.
