yoctoで日本語入力

今まで、yoctoで作成したLinuxでは日本語を表示できる環境はよく見かけたが、 meta-oeにはuimanthyのパッケージが存在するのに、日本語を入力できる環境を見たことがなかった。

今回、仕事がらみで日本語入力環境について調べたところ、uimのレシピに不具合があり、 正しい日本語入力環境が作成できなくなっていたことがわかった。 いろいろ修正した結果日本語が入力できる環境を作成することができたので、 これらの修正パッチをmeta-openembeddedのMLに投稿したところ、取り込んでもらえた。 そのため、masterブランチおよび次期バージョンではuim+anthyによる日本語入力環境が作成できるようになる。

ここではmasterブランチを使用し、qemu環境で日本語を入力できる環境を構築する。

poky及びmeta-openembeddedの取得

$ git clone git://git.yoctoproject.org/poky.git
$ cd poky
$ git clone git://git.openembedded.org/meta-openembedded

環境変数の設定

$ cd ../
$ source poky/oe-init-build-env build

これで自動的にbuildディレクトリへ移動する。

レイヤの追加

$ bitbake-layers add-layer ../poky/meta-openembedded/meta-oe

local.confの修正

IMAGE_INSTALL_append = " uim-xim uim-utils uim-common uim-gtk2.0 uim-gtk3 uim-anthy"
IMAGE_INSTALL_append = " ttf-vlgothic ttf-sazanami-gothic ttf-sazanami-mincho"
IMAGE_INSTALL_append = " setxkbmap"

IMAGE_LINGUAS ?= "ja-jp ja-jp.euc-jp"
GLIBC_GENERATE_LOCALES = "ja_JP.UTF-8 ja_JP.EUC-JP"

日本語入力に必要なパッケージと、日本語フォント、キーボードレイアウトの設定。 そしてロケールの設定を追加している。

bitbake

$ bitbake core-image-sato

QEMUの起動

buildディレクトリで次のコマンドを実行するとQEMUが起動する。

$ runqemu

日本語設定

そのままでは、日本語の表示び入力が有効化されていないので、~/.profileを以下の内容で作成し、rebootする。

export LC_ALL=ja_JP.UTF-8
export GTK_IM_MODULE="uim"
export XMODIFIERS="@im=uim-anthy"
uim-xim &
uim-toolbar-gtk-systray &
setxkbmap -layout jp

日本語入力

再起動後、キーボードも日本語配列になり、 「shift+スペース」で日本語入力ができるようになる。

きちんと試してはいないが、Qt系のアプリではおそらく効果はないと思う。(QT_IM_MODULEの環境変数を設定しても)

f:id:mickey_happygolucky:20170917053328p:plain
日本語入力の様子

これらのパッケージは、もちろんQEMU以外の実機でも動作する。