トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

Diary/2024-1-3

Tgif で日本語入力

生活環境は,fcitx-mozcなUbuntu 22.04.
これにaptでインストールしているTgifではIMでの日本語入力ができてないどころか,
コピペしようとしても文字化けしてペーストできなかった.
というわけで,

を参考に,先人の日本語パッチあてて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 変換することにした.

text.c(51)