Koyubi SKK Koyubi Project
winget install --id=Koyubi.SKK -e Koyubi is an SKK-based Japanese input method system for Windows, designed for English keyboard layout users (especially HHKB). Implemented as a TSF (Text Services Framework) IME in Rust.
winget install --id=Koyubi.SKK -e Koyubi is an SKK-based Japanese input method system for Windows, designed for English keyboard layout users (especially HHKB). Implemented as a TSF (Text Services Framework) IME in Rust.
英語配列キーボードユーザーのための Windows SKK 実装
> SKKユーザーの小指に捧ぐ
Koyubi は、HHKB をはじめとする英語配列キーボードで SKK を快適に使うことに特化した Windows 向け日本語入力システム(IME)です。
Windows 上の既存 SKK 実装(CorvusSKK, SKK日本語入力FEP 等)は優れたソフトウェアですが、英語配列キーボードでの利用において以下のような痒い点が残ります:
Koyubi はこれらの課題を解決し、英語配列 + SKK という組み合わせにおける最高の入力体験を目指します。
┌─────────────────────────────────────┐
│ Windows アプリケーション │
└──────────┬──────────────────────────┘
│ TSF (Text Services Framework)
┌──────────▼──────────────────────────┐
│ koyubi-tsf (COM DLL) │
│ ├── ITfTextInputProcessor │
│ ├── ITfKeyEventSink │
│ ├── 候補ウィンドウ │
│ └── 入力モードインジケーター │
└──────────┬──────────────────────────┘
│ Rust 関数呼び出し
┌──────────▼──────────────────────────┐
│ koyubi-engine (ライブラリ) │
│ ├── ローマ字 → かな変換 │
│ ├── SKK 辞書管理 │
│ │ ├── システム辞書 (SKK-JISYO.L) │
│ │ └── ユーザー辞書 │
│ ├── 変換エンジン │
│ │ ├── ▽モード(未変換) │
│ │ ├── ▼モード(変換候補選択) │
│ │ └── 送り仮名処理 │
│ └── 設定管理 (TOML) │
└─────────────────────────────────────┘
koyubi/
├── Cargo.toml # ワークスペース定義
├── crates/
│ ├── engine/ # koyubi-engine: SKK 変換エンジン(プラットフォーム非依存)
│ │ ├── Cargo.toml
│ │ └── src/
│ │ ├── lib.rs
│ │ ├── romaji.rs # ローマ字 → かな変換テーブル・ステートマシン
│ │ ├── dict.rs # SKK 辞書の読み込み・検索
│ │ ├── candidate.rs # 変換候補管理
│ │ ├── composer.rs # 入力状態管理(▽/▼モード遷移)
│ │ ├── okuri.rs # 送り仮名処理
│ │ └── config.rs # 設定ファイル管理
│ │
│ └── tsf/ # koyubi-tsf: Windows TSF 統合(COM DLL)
│ ├── Cargo.toml
│ └── src/
│ ├── lib.rs # DLL エントリポイント (DllGetClassObject 等)
│ ├── text_service.rs # ITfTextInputProcessor / ITfKeyEventSink 実装
│ ├── key_event.rs # VK → KeyEvent 変換
│ ├── edit_session.rs # テキスト編集セッション
│ ├── candidate_ui.rs # 候補ウィンドウ
│ ├── lang_bar.rs # 言語バーボタン
│ └── register.rs # COM 登録/解除
│
├── dict/ # デフォルト辞書ファイル
├── docs/ # 設計ドキュメント
│ ├── ARCHITECTURE.md
│ ├── KEYMAP.md
│ └── DEVELOPMENT.md
└── installer/ # Inno Setup スクリプト・winget マニフェスト
入力例: 「ここで履物を脱いでください」
キー入力: kokodeHakimono woNuIdekudasai
^ ^^
Shift で変換開始 送り仮名
状態遷移:
[直接入力] → k → ko → kok → koko → kokod → kokode
[Shift] → H → ▽は → ▽はk → ▽はki → ▽はkim → ...
[Space] → ▼履物 → 確定
...
| キー | 動作 |
|---|---|
| Ctrl-J | IME ON(かなモードへ) |
| Ctrl-; | IME OFF(ASCII モードへ) |
| Ctrl-Space | IME ON/OFF トグル |
※ 半角/全角キーがなくても完全に動作する
| キー | 動作 |
|---|---|
| Shift + [a-z] | ▽モード開始(変換ポイント設定) |
| Space | 変換(▽→▼)/ 次候補 |
| Ctrl-J | 確定 |
| Ctrl-G | キャンセル |
| Enter | 確定 |
| q | カタカナ変換 |
| l | ASCII モード |
| L | 全角英数モード |
| / | Abbrev モード |
| x | 前候補 |
Space キーを Shift キーとして兼用する機能です(デフォルト有効)。
| 操作 | 動作 |
|---|---|
| Space 単独タップ | 通常の Space(変換/次候補) |
| Space + 他キー | Shift + そのキー(▽モード開始等) |
SKK では Shift を多用しますが、SandS により小指の負担を親指に移せます。
Ctrl を使ったカーソル移動・編集(デフォルト有効):
| キー | 動作 |
|---|---|
| Ctrl-F / Ctrl-B | カーソル右 / 左 |
| Ctrl-A / Ctrl-E | 行頭 / 行末 |
| Ctrl-N / Ctrl-P | カーソル下 / 上 |
| Ctrl-D | Delete |
| Ctrl-H | Backspace(常に有効) |
| Ctrl-K | 行末まで削除 |
CapsLock を Ctrl として使用します(デフォルト無効)。有効にすると:
> 注意: CapsLock のトグル動作は OS レベルで発生します。PowerToys やレジストリで CapsLock トグルを無効化することを推奨します。
%APPDATA%\Koyubi\config.toml で設定:
# SandS (Space and Shift) — デフォルト: true
sands_enabled = true
# Emacs キーバインド (Ctrl+F/B/A/E/N/P/D/K) — デフォルト: true
emacs_bindings_enabled = true
# Thumb Shift(無変換/変換/カナキーを Shift として使用)— デフォルト: false
thumb_shift_enabled = false
# CapsLock → Ctrl — デフォルト: false
caps_ctrl_enabled = false
# 起動時の入力モード: ascii, hiragana, katakana
initial_mode = "ascii"
# SKK 操作キー
toggle_kana = "q" # カタカナ変換
enter_ascii = "l" # ASCII モード
enter_zenkaku = "L" # 全角英数モード
prev_candidate = "x" # 前候補
# 辞書パス(省略時は自動検出)
# system_dict_paths = ["C:\\path\\to\\SKK-JISYO.L"]
# user_dict_path = "C:\\path\\to\\user-dict.skk"
cargo build --release
cargo install cargo-xwin
cargo xwin build --target x86_64-pc-windows-msvc --release
# 管理者権限の PowerShell で
regsvr32.exe "target\release\koyubi_tsf.dll"
regsvr32.exe /u "target\release\koyubi_tsf.dll"
MIT License
SKK ユーザーは Shift キーを多用します。 その Shift キーを押し続ける小指 (koyubi) に敬意を込めて。