前回の続き。「子供の科学」バージョンの Raspbian(ジブン専用パソコン2)に LÖVE (Love2D) を入れてはみたが、キー入力に不具合があった。1回押したキーが、2度ずつ認識されてしまう。
これは SDL2 に原因があって、既知の問題らしい。いくつか関連しそうな記事が見つかった。
- "Fix double events / no repeat flag on key events when built withoutibus/fcitx" (Mercurial/SDL/changeset)
- "Keyboard input is broken with SDL2 on X11/libinput" (Taisei Project)
SDL2 の changeset で取り上げられている、ということは、もう修正されているのか? Raspbian の SDL2 は 2.0.5 なので、SDL2.0.8 をダウンロードしてビルドしてみた。けど、症状は治らない。
きっとインプットメソッド絡みだろう、と当たりをつけて、調べてみる。「子供の科学」Raspbian では、日本語入力メソッドとして fcitx-mozc を使っている。SDL2.0.8 の configure ログを見てみると、fcitx が有効になってない。
$ ../configure
...
Using libudev : YES
Using dbus : YES
Using ime : YES
Using ibus : YES
Using fcitx : NO # これだ!
もう少し configure ログを詳しく見てみると、fcitx/frontend.h
が見つからないのが原因らしい。
$ ../configure
...
checking for pkg-config... (cached) /usr/bin/pkg-config
checking fcitx/frontend.h usability... no
...
これはアレだな、dev 系パッケージが入ってないやつだな。というわけで、fcitx-libs-dev
パッケージをインストールする。
$ sudo apt-get install fcitx-libs-dev
...
$ ../configure
...
checking for pkg-config... (cached) /usr/bin/pkg-config
checking fcitx/frontend.h usability... yes
checking fcitx/frontend.h presence... yes
checking for fcitx/frontend.h... yes
...
Using libudev : YES
Using dbus : YES
Using ime : YES
Using ibus : YES
Using fcitx : YES # よっしゃ。
この SDL-2.0.8 と love-11.2 をまとめて、/usr/local/games/love
以下に置く。実行するには、下のスクリプトを /usr/bin/love
として置いておく。
#!/bin/sh
export LD_LIBRARY_PATH=/usr/local/games/love/lib
/usr/local/games/love/bin/love "$@"
アプリケーションやドキュメントアイコンを認識させるのにちょっと手こずったが、なんとかインストーラを作成できた。下に置いておきます。使い方は前回と同じ。
[love2dx-install.tgz (18.1 MB)] (2019/1/19 バージョン)