トップ 一覧 Farm 検索 ヘルプ RSS ログイン

Diary/2024-1-3の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!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}}