Skip to content

キーボードの分割・カーブと候補配置 / Keyboard geometry controls - #1226

Merged
KazumaProject merged 19 commits into
devfrom
codex/keyboard-geometry
Oct 31, 2026
Merged

KazumaProject merged 19 commits into
devfrom
codex/keyboard-geometry

Conversation

@KazumaProject

@KazumaProject KazumaProject commented Oct 28, 2026 •

Copy link
Copy Markdown
Owner

日本語

既存の QWERTY、TenKey、スミレ入力 β に、画面の向きごとのカーブ・高さ・候補位置の設定を追加します。QWERTY は中央の分割幅も調整でき、分割中はグライド入力を一時停止し、分割を解除すると元の設定に戻します。

  • 設定画面のプレビューは、IME の入力 View やコントローラーを生成しない表示専用の実装です。キーボードの表示リソースを読み取り、キーの形・アイコン・幅と高さ・背景の角丸などの設定を反映します。
  • カーブの内側を上げる/下げる方向を角度とは独立して切り替えられます。TenKey とスミレ入力では右手向け/左手向けの配置も選べます。
  • 拡大・縮小されたフローティング画面でも、候補欄の表示位置とタッチ領域を一致させます。
  • 自動高さ調整または現在の高さへの収まりを選択でき、回転後のキー位置とフリック方向を入力判定に反映します。
  • 十分な幅がある場合、QWERTY の中央や TenKey/スミレ入力の左右に既存の候補を表示します。幅が不足すると上部へ戻します。
  • 初期値は既存配置を維持し、通常表示とフローティング表示に対応します。既存の 2 キーボード分割モードとユーザー作成キーボードには適用しません。

English

Add per-orientation controls for the shape, height, and candidate placement of the existing QWERTY, TenKey, and Sumire β keyboards. QWERTY also supports an adjustable center gap; glide typing is temporarily disabled while split and restored when the split is removed.

  • The settings preview is display-only and does not create IME input views or controllers. It reads the keyboard presentation resources and reflects key shapes, icons, width, height, background corner settings, and other appearance preferences.
  • Curve direction can be switched between raising and lowering the inner edge independently of the angle; TenKey and Sumire also support left- and right-hand layouts.
  • Candidate touch exclusion follows the on-screen position when the floating keyboard is scaled.
  • Curved layouts can expand automatically or fit within the configured height; hit testing and flick directions follow the transformed keys.
  • Existing candidates can appear in the QWERTY center gap or alongside TenKey/Sumire when there is enough room, falling back to the top otherwise.
  • Defaults preserve the current layout. Both docked and floating keyboards are supported; the existing dual-keyboard split mode and user-created keyboards are excluded.

検証 / Testing

  • :app:assembleLiteStandardDebug
  • Geometry, preferences, existing independent multi-touch, QWERTY glide and custom keyboard controller unit tests
  • Android API 35 emulator: docked and floating QWERTY/TenKey input and candidate selection, landscape QWERTY, split-space touches, and curved Sumire input
  • Android API 35 emulator: 11 preview comparisons covering both curve directions, QWERTY, TenKey, Sumire β, dimensions, maximum curve, alternate layout, guide preferences, and rounded background
  • Android API 35 emulator: candidate selection in docked and floating modes; left/right/top switching, restoring a multi-row candidate layout, and narrow-width fallback

操作動画 / Demonstrations

実際の設定画面で値を変更し、その後デバッグ用の入力欄で実際の IME に入力しています。動画はリポジトリには含めていません。

These recordings change the actual settings, then use the real IME in a debug text field. The videos are not committed to the repository.

カーブ方向の切り替え / Switching curve direction

実際の設定画面で向きを切り替え、反対向きの QWERTY で入力して中央の候補を選択します。 / Switch the curve direction in settings, then type and select a centered candidate on the reversed QWERTY.

direction-final.mp4

QWERTY

分割・角度・中央候補を設定し、入力、候補の選択、左右のスペースキーを確認します。 / Adjust the split, curve and centered candidates, then type, select a candidate and use both space keys.

qwerty-final.mp4

TenKey

左手向けのカーブと右側候補を設定し、入力・候補の選択・フリックを確認します。 / Set a left-hand curve and right-side candidates, then type, select a candidate and flick.

tenkey-final.mp4

スミレ入力 β / Sumire β

右手向けのカーブと左側候補を設定し、入力と候補の選択を確認します。 / Set a right-hand curve and left-side candidates, then type and select a candidate.

sumire-final.mp4
アニメーション版 / Animated versions Switching curve direction QWERTY TenKey Sumire beta

@KazumaProject
KazumaProject merged commit 893ba6d into dev Oct 31, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant