Skip to content

feat: Unicode入力をサポート(Shift+Ctrl+U) #186

Closed

Description

@ensan-hcl

Linux系ではShift+Ctrl+UでUnicode文字を入力できるのが一般的なようなので、これをazooKeyでも実装したい。

Activity

  1. inugamine commented on Dec 14, 2025

    @inugamine
    Contributor

    度々すみません、これもやってみたいんですけど着手してみてもいいですか?(実は半分...3割くらいは着手しちゃいました)

  2. ensan-hcl commented on Dec 14, 2025

    @ensan-hcl
    MemberAuthor

    お願いします!設計は少し自由度があると思うのですが、今のところはどういう形を想定されていますか?

  3. inugamine commented on Dec 14, 2025

    @inugamine
    Contributor

    Linuxのデスクトップ環境で使えるような、Shift+Ctrl+U による Unicode コードポイント入力を実装してみる予定です。(現在着手中で、一旦動くものはできました)

    1. Shift+Ctrl+U を押すと「U+」と表示される
    2. 16進数のコードを入力すると「U+3042」のように表示される
    3. Enter または Space で対応する Unicode 文字(例: U+0061 → a)が挿入される
    4. 文字入力中に当該キー操作を行った場合は、それまで入力された文字列を自動で確定して Unicode 入力を開始する
    5. Backspace で1文字削除、Escape でキャンセルする(U+ の部分は丸ごと削除される)
      のような動きをします。

    既存の日本語変換フローには影響を与えないように独立したステートとして実装し、また、別所でもやり取りをさせていただきましたが、keyCodeで Shift+Ctrl+U を認識する方針で進めます。

    【変更箇所】
    UserAction.swift: .startUnicodeInput アクションを追加
    InputState.swift: .unicodeInput(String) ステートと、ステートマシンのロジックを追加
    UserAction+getUserAction.swift: keyCode で Shift+Ctrl+U を検出
    ClientAction.swift: Unicode 入力用のアクション(モード開始、文字追加、削除、確定、キャンセル)を追加
    azooKeyMacInputController.swift: 上記アクションのハンドラを追加
    SegmentsManager.swift: markedTextとして「U+xxxx」を表示する処理を追加

  4. ensan-hcl commented on Dec 14, 2025

    @ensan-hcl
    MemberAuthor

    @inugamine 日本語入力中にどのようにハンドリングするのかに関してはどうでしょうか?例えば「あいうえお」とすでに入力済みの状態でShift+Ctrl+Uを打つ場合です。

  5. inugamine commented on Dec 14, 2025

    @inugamine
    Contributor

    @ensan-hcl 日本語入力中の動きについては 4 にも記載しましたが、その例で言うと未確定状態の「あいうえお」があった場合は、Shift+Ctrl+U を押した瞬間にあいうえおが確定(Enterを押したときの動き)されます。確定済みの状態でこれらのキーを押下した場合は特に何も起こらずに Unicode 入力機能が動きます。
    (答えになってますかね......)

    もし、何か確定していない文字列がある場合は Unicode 入力機能を無効にしたいなどありましたらその方針に沿って修正してみます

  6. ensan-hcl commented on Dec 14, 2025

    @ensan-hcl
    MemberAuthor

    なるほど、読み落としていました。それで良いと思います。すでに変換候補ウィンドウが出るなどのケースでは適切に選択されているもので確定するようにする必要がありそうです。このほかは良いと思うので、お願いします!

  7. inugamine commented on Dec 14, 2025

    @inugamine
    Contributor

    @ensan-hcl 変換候補ウィンドウが出ているときの挙動については考慮が足りていない部分でした。こちらも合わせて調整してみます

  8. inugamine commented on Dec 15, 2025

    @inugamine
    Contributor
    1. 変換候補ウィンドウが出ている場合は、選択された変換候補で確定してから Unicode 入力機能を開始するように調整しました。
    Image

    ↓ Shift+Ctrl+U を押下
    Image

    1. 選択候補が選択されていない状態で Shift+Ctrl+U を押下した場合は、以降確定していない文字列はひらがなのまま確定することにしました。
    Image

    ↓ 「せんたくしないばあい」に対して変換候補を選択せず Shift+Ctrl+U を押下
    Image

    これについてはユーザーが意図しない変換候補を勝手に選択するよりは、ひらがなのままのほうが潔いかなと思って調整しました。

  9. ensan-hcl commented on Dec 15, 2025

    @ensan-hcl
    MemberAuthor

    良いと思います!

  10. ensan-hcl commented on Dec 16, 2025

    @ensan-hcl
    MemberAuthor

    resolved in #233

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions