hadsn/WIME
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
------
wime
------
LinuxのWine上にインストールされたIMEをかんなに見せかけるプログラムです。
- [必要なもの]
- [debianで必要なパッケージ]
- [Makefileで使っている変数]
- [Wineへのパッチ]
- [利用までの手順]
- [使い方]
- [コマンドラインの書式]
- [UTF-16モード]
- [かな入力]
- [環境変数]
- [設定ファイル]
- [~/.wime/hinshi,$(PREFIX)/share/wime/hinshi]
- [サポートプログラム]
- [GTK+用immodule]
- [再変換]
- [XIMサーバー]
- [コマンドラインオプション]
- [リソース]
- [入力スタイル]
- [変換ウィンドウのフォント]
- [wimectrl]
- [コマンドラインオプション]
- [Qt用immodule]
- [im-config用定義ファイル]
- [作業用ファイル]
- [いろいろ]
- [作成環境]
- [ソフトウェアの使用について]
- [連絡先]
必要なもの
==========
- Wine
- libcannaのヘッダファイル(RK.h)
- GTK+ (immoduleを使用するとき)
debianで必要なパッケージ
========================
---------- ---------------------------------------------------------------
wime make gcc libwine-dev libx11-dev libcanna1g-dev pkg-config
gtk im libgtk2.0-dev libgtk-3-dev libgtk-4-dev (いずれか、あるいは全部
)
qt4 im libqt4-dev g++
im-config im-config
---------- ---------------------------------------------------------------
など。
Makefileで使っている変数
========================
----------- --------------------------------------------------------------
PREFIX インストール先ディレクトリ(/usr/local)
CFLAGS コンパイル時のフラグ(-g -Wall)
CXXFLAGS C++でコンパイルする時のフラグ(-g -Wall)
LDFLAGS リンク時のフラグ(-g)
WINEDIR Wineがインストールされているディレクトリ(/usr/local)
WINEINCDIR Wineのincludeディレクトリ($(WINEDIR)/include/wine)
INSTALL installコマンド (install)
MKDIRP ディレクトリ作成コマンド(install -d)
CONFDIR 個人用設定ファイルをいれるディレクトリ(.wime)
USE_CLANG GCCではなくclangを使用するとき1 (0)
PROG 利用するサポートプログラム(xim gtk2 gtk3 gtk4 qt4 qt5 qt6 im-
config)
WOW64 64ビット環境で32ビットWineを使用するとき1 (0)
CC32_ENV 32bit環境へのコマンド
----------- --------------------------------------------------------------
これらの変数は conf.mk にあります。 makeの引数で指定することもできます。
DESTDIR を定義したときは、インストール先ディレクトリパス(PREFIX)の前に
DESTDIR が付け足されます。
最近のWineはWOW64がうまく動作するため、WOW64を有効にしたWineであれば変数WOW64を1にする必要はありません。
環境変数WINEARCHをwin32にしたWine環境の場合等で1にしてください。
chrootやlxcなどによる32bit開発環境があるとき、CC32_ENVをschrootやlxc-executeなどにしておくとコンパイルコマンドをそれへの引数として実行します。gcc-multilibでそのまま32bitアプリケーションが作れる場合は特に設定する必要はありません。
Wineへのパッチ
==============
- Wine1.7.3以降でimmに変更が加えられ、ATOKが動作しなくなりました。
Wineのソースにパッチimm-magic-1.7.3をあてると動作するようになります。
Wine7.13以降ではimm-magicは必要なくなりました。代わりにパッチimmgwlを適用してください。
Wine8.5以降ではパッチimmgwlは必要ありません。
- Wine3.8以降で64ビット版ATOKのインストールが成功するようになりましたが、64ビット版を動作させるためにはパッチtransmsgの適用が必要です。
Wine8.6以降では必要ありません。
- wimegtkやwimeximでかな入力をする場合はパッチkanainputを適用してください。
- Wine5.10以降でATOKの拡張辞書を使っている場合、辞書による検索結果が表示されません。詳しくはReadme.atokを参照してください。
利用までの手順
==============
1. wimeのコンパイル&インストール。
2. IMEをWineにインストール。
3. レジストリの確認(Readme.atokを参照してください)。
4. ximやgtk-imを使う場合、Xのリソース(imeToggleKeyなど)、環境変数(XMODIFIERS,
GTK_IM_MODULEなど)を設定。
5. gtk-imを使う場合、gtkのimmodules.cacheを更新する。
6. wimeを実行。
共有ライブラリを使うので、wimeインストール後にldconfigを実行してください。
使い方
======
wime
で起動します。以後cannaserverと同じように振る舞います(その予定です)。
かんなと同時に使うことは出来ません。先にかんなを停止させてください(後述のコマンドラインオプションか環境変数を使うことで同時に起動させることもできます)。
終了は
wimectrl -k
あるいは
cannakill
です。
インストール前に
LD_LIBRARY_PATH=./io:./so:$LD_LIBRARY_PATH ./exe/wime
として動作確認できます。
コマンドラインの書式
====================
wime [options] [logfile]
------------------------- ------------------------------------------------
-h オプションの一覧を表示します。
-p<数値> ソケットのファイル名に':数値'を追加します。
-e<ime> IMEに特定の処理を行います。今のところ'atok'が指
定できます。
-v[数値] 動作の詳細表示。
--channel <name,...> ログの種類を選択します。
--version バージョンを表示。
logfile -vで詳細表示させたときの出力先ファイルを指定しま
す。省略したときと'-'を指定したときは標準出力に
なります。
------------------------- ------------------------------------------------
-pオプションを使うことでcannaと同時に使用する、あるいはwimeを複数起動させることができます。
例えばwimeを"-p1"で起動させ、wimeを直接使用するプログラム(wimectrl,wimexim)にも"-p1"を付けます。immoduleは後述の環境変数WIME_SOCKETを使って、この場合`WIME_SOCKET=1 gedit`などとします。こうするとcannaserverは通常のソケット"/tmp/.iroha_unix/IROHA"で、wimeは"/tmp/.iroha_unix/IROHA:1"で使用できます。ただしcannaプロトコルを直接扱うプログラムはどうにかしてソケットのファイル名を編集するしかありません。
-vオプションの数値には0から3、もしくは"-"を指定します。数値が大きいほど詳細情報になります。0と"-"は表示なし、3はデバッグ出力です。
-vを複数書いたときはその個数が情報レベルになります。
--channel オプションは -v を指定したときに何を出力するかを選択します。
------------- ------- ------------------------------
global 1 一般情報
composition 2 WM_IME_COMPOSITIONメッセージ
notify 4 WM_IME_NOTIFYメッセージ
request 8 WM_IME_REQUESTメッセージ
imemsg 0x10 上記以外のimeメッセージ
canna 0x20 cannaの関数
xim 0x40 XIM
gtk 0x80 Gtk-im
qt 0x100 Qt-im
winmsg 0x400 windows message全部
time 0x800 経過時間
all 上記全部
------------- ------- ------------------------------
上記の名前か数値を","で列挙します。数値は足し算した値でもかまいません。また前に"-"をつけるとその項目は表示しません。例えば
global,notify,0x30
all,-time (左から順に評価するので、逆にすると効果無し)
などとします。
UTF-16モード
============
cannaプロトコルの"initialize"を使うときにユーザ名の後ろに"@utf16le"(もしくは"@utf16")か"@utf16be"を付けると、その接続で使う文字コードはかんなで使用している2バイトのEUC-JPではなく指定した文字コード(UTF-16)であるとします。もちろんこれだけでUTF-16が使えるわけではなく、wimeを使用するアプリケーション側もこれに応じた処理が必要になります。
これが使えれば、UTF-16にはあってもEUC-JPに無かったために文字化けしていた文字が扱えるようになります。
かな入力
========
wimegtkやwimeximでかな入力する場合は、パッチkanainputをWineのソースコードに当ててWineをコンパイルしてください。対象はwinex11.drv.soです。
次にsetxkbmapコマンドでキーボードのレイアウトを変更します。
setxkbmap -model jp106 -layout 'jp,jp(kana)'
-layoutオプションに'jp(kana)'を追加します。他のオプションは適当にしてください。
-printオプションで現在の設定を表示させて、
setxkbmap -print|grep symbols
xkb_symbols { include "pc+jp+jp(kana):2+inet(evdev)+terminate(ctrl_alt_bksp)" };
xkb_symbolsに'jp(kana):2'があることを確認してください。
環境変数
========
WIME_SOCKET=数値
: 1以上の数値を指定すると、ソケットのファイル名に数値を付け足します。
-pオプションと同じものです。
WIME_DEBUG=数値,name,...
: 0から3までの数値(-vオプションと同じ)とその後ろに--channelオプションと同じ
形式で指定します。
これらが設定されていても、コマンドラインでの指定が優先されます。
gtk im,qt im
モジュールにはコマンドラインで指定することができないので、環境変数で設定します。
設定ファイル
============
~/.wime/hinshi,$(PREFIX)/share/wime/hinshi
--------------------------------------------
Windows IMEの品詞コードとかんなの品詞コードの対応表です。
フォーマットは
<Windowsのコード> <品詞名> <かんなのコード ...>
です。先頭が"#"の行と空行は無視されます。品詞名は使いません(参考用です)。
<かんなのコード> には正規表現が使えます。
かんな品詞コードはかんなマニュアル(cannadoc.pdf)などを参照してください。
このファイルがない場合、単語登録はできません。
品詞の対応が見つからなかった場合、先頭の品詞コードが使われます。
添付しているのはATOK2008を使っている時のものです。
> wimectrl -w
で新しく生成することができますが、かんなの品詞コードは書かれていません。
hinshiファイルは$(PREFIX)/share/wimeにインストールされます。 先に
~/$(CONFDIR)/hinshi を探し、ファイルがなかった場合
$(PREFIX)/share/wime/hinshi を読み込みます。
サポートプログラム
==================
------------------------ -------------------------------------------------
im-wime.so GTK+用immodule
wimexim XIMサーバー
wimectrl IMEの設定ダイアログの表示、wimeの終了などを行いま
す。
libwimeqim.so Qt用immodule
im-config用定義ファイル
------------------------ -------------------------------------------------
GTK+用immodule
--------------
キー入力をWineに丸投げするため、変換操作時のキーバインドはIMEのものになります。
GTKアプリ上の右クリックで出るポップアップメニューで入力メソッドを"Wime"にするか、環境変数GTK_IM_MODULEに"wime"を指定します。
IMEのトグルキーはXのリソース"imeToggleKey"(アプリケーション名"wimegim")かIMEのプロパティのキー定義で設定します。XIMサーバーの項を参照してください。
wimeに-pオプションを使っている場合、環境変数WIME_SOCKETに同じ数値を設定してください。
`make install`でモジュールファイルがコピーされますが、GTK+の設定は行いません。
素のGTK+ではgtk-query-immodules-3.0の出力でimmodules.cacheを更新しますが、
このへんはディストリビューションによって多少違うようです。自分の環境に合わせて設定してください。
### 再変換
再変換したい文字列のところにカーソルを移動させてから再変換を行います。
選択部分を再変換することは現在できません。
XIMサーバー
-----------
これも同様にキー入力をWineに丸投げします。
環境変数 XMODIFIERS に "@im=wime" を指定してください。
### コマンドラインオプション
wimexim [-s] [-h -p<num> -v[num] --ch <name,...> --version]
オプションはwimeと同じです。
-sを指定したときはXサーバーへのリクエストを同期的に行います。
-pオプションか環境変数WIME_SOCKETがある場合、サーバー名にも数値が付け足されます。例えば
> wimexim -p4
あるいは
> WIME_SOCKET=4 wimexim
として起動させたときは XMODIFIERS は "@im=wime4" になります。
### リソース
imeToggleKey: [Stkeys-]Key[ ...]
: IMEのトグルキーを指定します。 Stkeys は
S(shift),C(ctrl),AかM(alt),W(super),1~5(mod1~mod5)を1つ以上指定します
(必要ない場合、[Stkeys-]の部分は省略できます)。
Keyはキーボード上の1文字、あるいはキー名(keysymdef.hにあるもの)です。
"\n"、"\t"、スペースで区切って複数のキーの指定ができます。
例:
A-` Altと"`"キー
SC-space ShiftとCtrlとスペースキー
F12 F12キー
imeOnKey: [Stkeys-]Key[ ...]
imeOffKey: [Stkeys-]Key[ ...]
: IMEのオン/オフキーを指定します。
defaultCompositionFont: PixelSize,Foundry Family
: 変換ウィンドウのフォントセットが指定されなかったときに使うフォントを指定
します。
Foundry,Family,PixelSizeはXLFDの要素です。下の"変換ウィンドウのフォント"も
参照してください。
アプリケーション名はwimeximでは"wimexim"、im-wime.so(GTK IM)では"wimegim"になります。クラス名は"Wime"です。
wimexim.imeToggleKey:A-space
wimegim.imeToggleKey:F1
などとしてXIMとGTK+でトグルキーを別にすることもできますが普通は同じキーでしょうから、その場合クラス名Wimeを使って
Wime.imeToggleKey:A-space
として1つの記述にできます。
imeToggleKey、imeOnKey、imeOffKeyのいずれも設定されていない場合、IMEがオフであってもすべてのキー入力をIMEに送ります。IMEのプロパティによるキー設定で日本語入力on/offの設定をしてください(逆に言えば、IME側で日本語入力on/offの設定ができればリソースの設定は必要ありません)。
### 入力スタイル
プリエディットは
- XIMPreeditPosition (over the spot)
- XIMPreeditCallback (on the spot)
- XIMPreeditArea (off the spot)
- XIMPreeditNothing (root window)
の4種類です。
ステータスは XIMStatusNothing,XIMStatusNone,XIMStatusArea
が指定できますが、どれにしてもIMEのステータスバーを表示します。
### 変換ウィンドウのフォント
over the spotで使われるフォントはフォントセットとしてXIMライブラリ(クライアントアプリケーション)から送られてきます。XのフォントはWine1.5.3以降では扱えなくなってしまいました。それへの対処としてWineのフォント置換を利用します。
レジストリ HKCU/Software/Wine/Fonts/Replacements に
"foundry family"="windows font"
というデータを作ります。
例えば kterm で変換ウィンドウのフォントセットに
-misc-fixed-medium-r-normal--14-110-100-100-c-70-iso8859-1,
-misc-fixed-medium-r-normal--14-130-75-75-c-140-jisx0208.1983-0,
-misc-fixed-medium-r-normal--14-130-75-75-c-70-jisx0201.1976-0
が使われる場合、
"misc fixed"="MS PGothic"
とします。
実際にどのフォントセットが使われるかは、各アプリケーションの設定を見るか、あるいはwimeximの出力の"fontSet"の行を探してください(wimeximのログはwime本体から出力されます)。
wimectrl
--------
wimeの終了などを行います。
今のところ rオプション(単語登録)はうまく動きません。
### コマンドラインオプション
------------ -------------------------------------------------------------
-c 文字列 文字列(文字コードは環境変数LANGのもの)を再変換しウィンドウに
表示します。文字列が'-'のときは標準入力から読み込みます。リソ
ースdefaultCompositionFontがあればウィンドウ表示に使います。
-d 辞書設定ダイアログを表示します。
-e 設定ファイル(~/.wime/hinshi)を再読み込みします。また、コンテ
キストを作り直します。IMEの設定ダイアログでの変更が反映されな
い場合このオプションを使ってください。
-k wimeを終了させます。
-kx wimeximを終了させます。
-p 数値 使用するソケット名に':数値'を付け足します。動作をするオプショ
ンより前に指定してください。
-r 単語登録ダイアログを表示します。
-s IMEの設定ダイアログを表示します。
-t[数値] wimeが使用可能になるまで停止します。停止時間をミリ秒で指定で
きます。省略したときは無期限になります。wimeに接続できないま
ま待ち時間が過ぎたときはステータス1で終了します。
-w hinshiファイルをつくるための品詞一覧を出力します。
--version バージョンを表示します。
-h, --help コマンドラインオプションの一覧を表示します。
------------ -------------------------------------------------------------
オプション -s がデフォルトです。
Qt用immodule
------------
(開発中)
im-config用定義ファイル
-----------------------
/usr/share/im-config/data に 50_wime.conf と 50_wime.rc
(im-configのバージョンが0.4以下の時は 50_wime.dsc 、 50_wime.im )
がインストールされます。
~/.wime(conf.mkのCONFDIRで指定したディレクトリ)にあるconfigファイルを読み込みます。
このファイルには環境変数を書いておきます。WIME_SOCKET と WIME_DEBUG
以外に、次のものを使います。
------------ -------------------------------------------------------------
WIME_ARG wimeへの引数
WIME_ENV wimeへの環境変数
WIMEXIM_ARG wimeximへの引数
------------ -------------------------------------------------------------
WIME_SOCKETを-pオプションに、WIME_DEBUGを-vと--chオプションに変換し、それらとWIME_ARGを引数にしてwimeを実行します。
例えばconfigファイルを次のようにすると
export WIME_SOCKET=2
export WIME_DEBUG=3,all
WIME_ARG='-e atok /tmp/wimelog'
WIME_ENV=WINELOADER=/usr/local/bin/wine64
次のコマンドラインが実行されます。
WINELOADER=/usr/local/bin/wine64 wime -p2 -v3 --ch all -e atok /tmp/wimelog
この例ではwine64で実行させるためにWIME_ENVを設定しています。
"WIME_SOCKET=2" は "-p2" に、"WIME_DEBUG=3,all" は" -v3 --ch
all" になり、それらとWIME_ARGの "-e atok /tmp/wimelog"
をwimeへの引数にします。
WIME_SOCKETがエクスポートされるので、wimegtkも正しいソケット(この場合/tmp/.iroha_unix/IROHA:2)を利用します。
~/.wimeに実行可能なwimeかwimeximがあればPREFIXにインストールしたwimeではなくそちらを実行します。
作業用ファイル
==============
----------------------- --------------------------------------------------
/tmp/.iroha_unix/IROHA cannaクライアントと通信するためのソケット
/dev/shm/wimepid wimeと通信しているプロセスのpidが記録される
/dev/shm/sem.wimerun 共有メモリのロックに使うファイル
----------------------- --------------------------------------------------
いろいろ
========
- ATOK使用時は-eオプションを付けてください。
- wimeを強制終了させた場合ソケットが残っているので、そのままでは wime
も cannaserver も再起動できません。 rm /tmp/.iroha_unix/IROHA
としてソケットを削除してください。
- wimeximでon-the-spotが使われた場合、候補ウィンドウは適当な場所(wime2.1.0では
左上隅)に表示されます。XIMのon-the-spotではカーソル位置が取得できず、
候補ウィンドウの位置制御をしていないためです。
修正する予定はありません。
- 動作チェックは野良ビルドの emacs と debパッケージの kinput2を
使っています。 scim や uim などは使ったことがないので、
うまく動作するかはわかりません。
→wime1.8.4以降はuimで動作するようです。
- wimexim、gtk-imで"( )<"の文字が入力できないときは
xmodmap -e 'keycode 187=' -e 'keycode 188=' -e 'keycode 94='
を行ってみてください。
作成環境
========
------------- ------------------------------------------------------------
OS Debian GNU/Linux trixie/sid
Wine 9.1
IME ATOK 2021
gcc 13.2.0
クライアント emacs-30.0.50(+yc.el), mousepad-0.6.2
------------- ------------------------------------------------------------
ソフトウェアの使用について
==========================
wime --- Copyright (C) 2008-2024 ,thomas
このソフトウェアの使用によって発生するいかなる損害についても作者は責任を負いません。
自己責任の下で使用してください。
ライセンスは、Wineにならって LGPL とします。
連絡先
======
バグ、提案、動作報告などありましたら <〓〓〓〓〓〓@yf7.so-net.ne.jp>
までお願いします。