# JPInputterAssist
Project Zomboid B42用のMODで、日本語IMEの組成テキストをオーバーレイパネルに表示します。これにより日本語の入力は通常は確定するまでテキスト入力フィールドに表示されない状態を、パネル上にタイプ、変換しようとしている文字を表示させることで補助します
## 機能
- **IME組成テキストの表示**: 日本語入力中の組成テキスト(例:「かんじ」と入力中)をパネルに表示
- **キーバインディング設定**: ゲーム内の設定からパネルの表示/非表示を切り替えるキーを変更可能(デフォルト:F1)
- **ドラッグ&リサイズ可能**: パネルを任意の位置に移動でき、サイズも変更可能
- **位置記憶**: パネルの位置とサイズはゲームを閉じても保存されます
## 必要環境
- Project Zomboid B42.16以降
- ZombieBuddyフレームワーク(Javaバイトコードパッチ用)
## 使い方
*****注意:技術的な詳細の概要が全く理解できない場合、またZombieBuddyの有効な導入方法がわからない場合の導入はお勧めしません。危険性を理解し信頼できる方のみお使いください*****
### パネルの表示
日本語入力を開始すると自動的にパネルが表示されます。テキストを確定(EnterまたはSpace)するとパネルは非表示になります。
### キーバインディングの変更
1. **Options**(オプション)メニューを開く
2. **Key Bindings**(キー設定)に進む
3. **JPInputterAssist** セクションを見つける
4. **Toggle IME Panel** のキーを任意に変更(デフォルト:F1)
### パネルの操作
- **移動**: タイトルバーをクリック&ドラッグでパネルを移動
- **リサイズ**: 右下のサイズ変更ハンドルをドラッグしてサイズ変更
- **表示/非表示**: 設定したキーバインディングを押す
## 技術的な詳細
### 動作原理
MODは以下を使用しています:
- **JNA (Java Native Access)**: Windows標準のimm32.dllを直接呼び出してIME組成テキストを取得
- **Javaブリッジ**: JNAインターフェースを管理し、Luaに関数を公開
- **Lua UI**: PZのISCollapsableWindowを使用してオーバーレイパネルを描画
### JNAによるIME取得
Windowsに標準搭載のimm32.dllを使用します。JNAはProject Zomboidに組み込まれているため、追加のDLLファイルは必要ありません。
## トラブルシューティング
### パネルは表示されるがテキストが文字化けする
- PZの言語設定が日本語になっているか確認
- MODはPZ標準の日本語フォント(Noto Sans JP)を使用します
### パネルが表示されない
- ZombieBuddyがインストールされ有効になっているか確認
- MODリストでMODが有効になっているか確認
## ファイル構成
```
JPInputterAssist/42/
├── mod.info # MOD情報
└── media/
├── java/client/
│ ├── client.jar # コンパイル済みJavaクラス
│ └── src/jpinputterassist/
│ ├── IMEDLLBridge.java # JNA (imm32.dll呼び出し)
│ └── ...
└── lua/
├── client/
│ └── JPInputterAssist.lua # メインUIパネル
└── shared/
└── JPInputterAssist_Keybind.lua # キーバインディング登録
```
## 更新履歴
### v1.1
- JNA実装に切り替え(外部DLL不要に)
- Windows標準のimm32.dllを使用
### v1.0
- 初回リリース
- IME組成テキスト表示パネル
- カスタマイズ可能なキーバインディング
- ドラッグ&リサイズ可能なパネル
- 位置の保存機能
### 日本語以外の対応について
入力した文字列が正しく表示されているか確実に確認できないので不具合があっても対応できません。
現状、使える可能性はありますが適切なフォントが選択されず文字化けする可能性もあります。
###感謝
ZombieBuddy Copyright (c) 2025 Andrey "Zed" Zaikin
Workshop ID: 3696903097
Mod ID: JPInputterAssist