- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!Tgif で日本語入力
生活環境は,fcitx-mozcなUbuntu 22.04.
これにaptでインストールしているTgifではIMでの日本語入力ができてないどころか,
コピペしようとしても文字化けしてペーストできなかった.
というわけで,
* https://ayapin-film.sakura.ne.jp/Tgif/utf8.html
* https://qiita.com/qiitamatumoto/items/bf142b88056fba0d1d94
を参考に,先人の日本語パッチあててTgifをビルド.
% wget --no-check-certificate https://bourbon.usc.edu/tgif/ftp/tgif/tgif-QPL-4.2.5.tar.gz
% mkdir tgif-patches; pushd tgif-patches
% wget --no-check-certificate https://bourbon.usc.edu/tgif/ftp/tgif/patches/tgif-QPL-4.2-patch5a.gz
% wget --no-check-certificate https://bourbon.usc.edu/tgif/ftp/tgif/patches/tgif-QPL-4.2-patch5b.gz
% wget https://ayapin-film.sakura.ne.jp/Tgif/Srcs/tgif-utf8conv2euc.patch
% wget https://ayapin-film.sakura.ne.jp/Tgif/Srcs/tgif-textcursor-a-urasim.patch
% popd
% tar xvf tgif-QPL-4.2.5.tar.gz
% cd tgif-QPL-4.2.5
% patch -b -p0 < ../tgif-patches/tgif-QPL-4.2-patch5a
% patch -b -p0 < ../tgif-patches/tgif-QPL-4.2-patch5b
% patch -b -p0 < ../tgif-patches/tgif-utf8conv2euc.patch
% patch -b -p0 < ../tgif-patches/tgif-textcursor-a-urasim.patch
で,Makefile.inに,-D_HAS_STREAMS_SUPPORT -DENABLE_NLS を追加して
% ./configure --prefix=/usr/local/
% make
としてビルド.
locale.hがないとかstropts.hが邪魔とかに起因するコンパイルエラーがでるので適宜修正してビルド.
終わったら,
% sudo make install
でインストールして,$HOME/.Xresources に
Tgif.Lang: ja_JP.eucJP
Tgif.Modifiers: false
Tgif.ConvSelection: _JAPANESE_CONVERSION
Tgif.DoubleByteInputMethod: xim
Tgif.*IMProtocol: fxitx
Tgif.DefaultSingleByteFont: Helvetica
Tgif.DefaultColorIndex: 0
Tgif.UseNKF: true
Tgif.CopyAndPasteJIS: true
Tgif.PreeditType: overthespot
Tgif.HKUShowFontChar: \244\244
Tgif.GBShowFontChar: \271\372
Tgif.RyuminShowFontChar: \244\242
Tgif.GothicBBBShowFontChar: \244\316
とか書いたものをxrdbで読み込んで,
% XMODIFIERS=@im=fcitx LANGUAGE=ja_JP LANG=ja_JP.EUC-JP LC_ALL=ja_JP.EUC-JP LC_CTYPE=ja_JP.EUC-JP /usr/local/bin/tgif
として実行.
これで,日本語入力モードを有効にできるようになった.
...が,入力してもテキストボックスに入らない.
コード眺めてみると,そもそも,text.c の,DrawText関数の時点で入力した文字列を取得できていない模様.
とりあえず,ペーストでだけでも日本語入ればいいや,と割り切ることにして,
text.cでペーストのハンドリングしてる箇所で無理矢理 UTF-8 → EUC-JP 変換することにした.
{{ref text.c}}