日本語XIMサーバ
on-the-spot対応日本語XIMサーバ 機能と実装の比較
機能サポート
XIMサーバ | ||||||
---|---|---|---|---|---|---|
ATOK8 (Solaris付属) |
xwnmo (Wnn6 Ver3付属) |
vje-delta 3.0 | Kinput2 (v3 sj3) |
Kinput2 (v3 canna) |
imserver | |
キャレット | IMサーバ側(アンダーバー文字で表示)制御/クライアント側キャレットは先頭位置 | IMサーバ側(リバース表示、末尾では非表示)制御/クライアント側キャレットは末尾位置 | IMサーバ側(リバース表示、末尾ではスペース文字のリバース表示)制御/クライアント側キャレットは末尾位置 | クライアント側制御 | クライアント側制御 | クライアント側制御 |
かなキー | ○ | ×(濁点・半濁点に未対応) | ○ | ○ | ×(~/.canna次第) | ○ |
前編集文字列が存在するときの挙動
XIMサーバ | ||||||
---|---|---|---|---|---|---|
ATOK8 (Solaris付属) |
xwnmo (Wnn6 Ver3付属) |
vje-delta 3.0 | Kinput2 (v3 sj3) |
Kinput2 (v3 canna) |
imserver | |
XmbResetIC()の戻り値 | 前編集文字列 | NULL | 前編集文字列 | 前編集文字列 | 空文字列(長さ0) | 前編集文字列(読み文字列) |
XmbResetIC()のあとのIMサーバの行動 | IMサーバ側文字列消去 -> 描画コールバックを呼びクライアントの前編集文字列を消去 -> 入力モードoff(終了コールバックは呼ばれない) | IMサーバ側文字列消去 -> 描画コールバックを呼びクライアントの前編集文字列を消去 -> 終了コールバックを呼ぶ -> 入力モードoff | 描画コールバックを呼びクライアント側文字列を一部再描画(サーバ側とクライアント側の両方の文字列が存続する) | IMサーバ側文字列消去のみ | IMサーバ側文字列消去のみ | IMサーバ側文字列消去 -> 描画コールバックを呼びクライアントの前編集文字列を消去 |
入力モードoff | 描画コールバックを呼びクライアントの前編集文字列を消去 -> IMサーバ側文字列をクライアントにコミットして消去 -> 終了コールバックを呼ぶ -> 入力モードoff | 描画コールバックを呼びクライアントの前編集文字列を消去 -> 終了コールバックを呼ぶ(コミットは呼ばれない) -> 入力モードoff | 描画コールバックを呼びクライアントの前編集文字列を消去 -> 終了コールバックを呼ぶ(コミットは呼ばれない) -> 入力モードoff -> 開始コールバックを呼ぶ -> 無消去無挿入の描画コールバックを呼ぶ -> 入力モードoff | 描画コールバックを呼びクライアントの前編集文字列を消去 -> IMサーバ側文字列をクライアントにコミットして消去 -> 終了コールバックを呼ぶ -> 入力モードoff | 前編集文字列が存在する状態で入力モードoffは不可 | 描画コールバックを呼びクライアントの前編集文字列を消去 -> IMサーバ側文字列をクライアントにコミットして消去 -> 終了コールバックを呼ぶ->入力モードoff |
入力モードoff直後の入力モードon | 通常の入力モードon | 開始コールバックを呼ぶ -> 描画コールバックを呼んで直前の前編集文字列を再挿入 | 通常の入力モードon | 通常の入力モードon | 通常の入力モードon | 通常の入力モードon |
そのほか
Kinput2 (v3 canna)
- クライアントと前編集文字列の同期がとれなくなることがあるなど動作がおかしい。
- canna側のUIライブラリを使用するため、キーバインディングが日本語変換エンジンの機構と強く結合している(そのためにかなキーが使用できない)。
- クライアントに渡されるタブ、改行などのキーイベントのキーコードが0になる不具合がある。
XIMStatusNothing | XIMStatusArea | XIMStatusCallbacks | |
---|---|---|---|
XIMPreeditNothing | ○ | × | × |
XIMPreeditArea | × | ○ | × |
XIMPreeditPosition | ○ | ○ | × |
XIMPreeditCallbacks | ○ | × | ○ |
Kinput2 (v3 sj3)
- cannaよりは安定している。
- クライアントに渡されるタブ、改行などのキーイベントのキーコードが0になる不具合がある。
XIMStatusNothing | XIMStatusArea | XIMStatusCallbacks | |
---|---|---|---|
XIMPreeditNothing | ○ | × | × |
XIMPreeditArea | × | ○ | × |
XIMPreeditPosition | ○ | ○ | × |
XIMPreeditCallbacks | ○ | × | ○ |
ATOK8 (Solaris付属)
- キーバインディングの変更は可能だが、キーの機能を状態によって区別しないので、ひとつのキーに複数機能を自由に割り当てることはできないようだ。
XIMStatusNothing | XIMStatusArea | XIMStatusCallbacks | |
---|---|---|---|
XIMPreeditNothing | ○ | ○ | ○ |
XIMPreeditArea | ○ | ○ | ○ |
XIMPreeditPosition | ○ | ○ | ○ |
XIMPreeditCallbacks | ○ | ○ | ○ |
xwnmo (WNN6 Ver3付属)
- クライアントと前編集文字列の同期がとれなくなることがあるなど動作がおかしい。
- 頻繁にXフォントセットを生成・解放しているらしく動きが重い。
- キーバインディングはいくつかのパターンから選ぶことができるだけらしい。
XIMStatusNothing | XIMStatusArea | XIMStatusCallbacks | |
---|---|---|---|
XIMPreeditNothing | ○ | × | × |
XIMPreeditArea | × | ○ | ○ |
XIMPreeditPosition | ○ | ○ | ○ |
XIMPreeditCallbacks | × | ○ | ○ |
vje-delta 3.0
- バージョン2.5ではon-the-spotには対応していなかった。バージョン3ではon-the-spotに対応した。
XIMStatusNothing | XIMStatusArea | XIMStatusCallbacks | |
---|---|---|---|
XIMPreeditNothing | ○ | × | × |
XIMPreeditArea | × | ○ | × |
XIMPreeditPosition | ○ | ○ | × |
XIMPreeditCallbacks | ○ | × | ○ |
番外: ASTEC-X経由のIME
- ASTEC-XのXサーバは、かなキー+コントロールキー+'a'キーを同時に押しても、'コントロール+a'ではなく、'ち'を返してくる('h'の場合はバックスペースを返してくれる)。
- on-the-spotには対応せず。