Skip to content

Zh: Discussion about the implementation of Chinese settings#2055

Draft
AstroNot233 wants to merge 82 commits into
futo-org:zhfrom
AstroNot233:zh
Draft

Zh: Discussion about the implementation of Chinese settings#2055
AstroNot233 wants to merge 82 commits into
futo-org:zhfrom
AstroNot233:zh

Conversation

@AstroNot233

Copy link
Copy Markdown
Contributor

** This is a Draft Pull Request looking for discussion on the implementation of Chinese. **

This PR moves ChineseIME settings to uix/settings/pages/langspecific/zh/ and separates engine logic from configuration.

Current state:

  • ChineseIME.kt is now a pure engine, without handling any config file.
  • RimeSettings.kt (an object) manages engine-wide settings and generates/overwrites default.yaml.
  • PinyinSettings.kt will manage pinyin-specific settings(in progress).
  • ZhuyinSettings.kt will be similar to Pinyin, and will be concerned after Pinyin being confirmed to work well.

I met some issues when implementing them, especially RimeSettings.kt (marked with TODO).

There are several questions bothering me:

  • Line22: I wonder if we have better way to get context? If not, is this way acceptable? When testing on my own device, no bugs occurred yet.
  • Line57: Still the question that how to call rime method without possessing rime singleton. An idea of mine is like broadcast.
  • Line62: Does FUTO already have compositions of checklists or should I build one?
  • Additional: fun generateDefaultYaml() is called in composition. This may cause unnecessary file rewrite and rime redeploy.

I have tested that it can generate the valid yaml as expected. So after fixing these issues, it should be able to work well and provide a template for Pinyin and Zhuyin, etc.

abb128 and others added 30 commits April 6, 2026 15:33
Chinese

See merge request keyboard/latinime!17
Signed-off-by: Aleksandras Kostarevas <alex@futo.org>
Signed-off-by: Aleksandras Kostarevas <alex@futo.org>
Signed-off-by: Aleksandras Kostarevas <alex@futo.org>
Changes as soon as a key is pressed, so that the user can use it before lifting the finger and avoid accidental langauge switches
We can't be sure that the user dictionary hasn't been modified in the time that our service wasn't running
Signed-off-by: Aleksandras Kostarevas <alex@futo.org>
abb128 and others added 25 commits May 19, 2026 14:39
Co-authored-by: slipstyle <102705917+slipstyle@users.noreply.github.com>
Co-authored-by: Aleksandras Kostarevas <alex@futo.org>
Since it automatically overrides the input connection and displays the keyboard, it makes sense to autofocus by default so we see the caret
Allow keys to visually and functionally span multiple rows by adding a
rowSpan attribute. The layout engine accumulates row heights for spanning
keys, sets a heightOverride, and converts overlapping entries in
subsequent rows to gaps. The clampHeight logic is adjusted to account
for multi-row keys so they aren't incorrectly shrunk.

This is needed for the ClearFlow layout where space keys on each side
should span two adjacent letter rows as single tall keys.
Add supportsSplit property to Keyboard data class. When false, the
Split button is hidden from the mode selector UI and the layout engine
falls back to Regular mode if split was previously active. This
prevents broken rendering for layouts like ClearFlow whose rows don't
split cleanly.
Swap outer functional keys (shift, backspace, action) between left and
right sides when the keyboard is in left-handed one-hand mode. Inner
letter keys remain in their original order. Layouts opt in via the
mirrorInOneHanded YAML property.
Swipe library integration

See merge request keyboard/latinime!18
…tion GUI tools to settings. Now the implementations of Rime engine and settings GUI are unbound.
@Zvonimir-FUTO Zvonimir-FUTO added Enhancement Request for a new feature Language Specific Regarding a specific language labels Jun 1, 2026
@AstroNot233

Copy link
Copy Markdown
Contributor Author

Hello @abb128!

In issue #2069, there have been people wanting to help. I think the old ill-composed class ChineseIME is unsuitable to maintain. How do you think about the change in this PR?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA-signed Enhancement Request for a new feature Language Specific Regarding a specific language

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants