技術

Fedora 23でログイン時にibus-mozcの入力モードを自動的にひらがなにする

この記事に関連するかもしれない記事

11月3日にFedora 23がリリースされました。
私もすぐにVMwareのゲストとしてインストールし、現在試してみているところです。
幾つかバグがあるようですが、個人的に一番気になるのは、デスクトップにログインしたままシャットダウンや再起動をしようとするとシャットダウン中に1分30秒ほど待たされるバグでしょうか。
普段スリープを多用するのであまり関係ないとはいえ、品質にちょっと疑いを持ってしまいます。
まぁ実験的なディストリビューションであり、以前から安定性は高くはありませんでしたが。(個人の感想)
でもFedora好きです。
ちなみに、先に挙げたバグは先にログアウトしてからシャットダウンもしくは再起動すると回避できます。(めんどくさw)
betaの頃からバグ報告が上がっていた部分なのでそのうち修正されるでしょう。

さて、タイトルの件です。

まずは前提。

今回はFedora 23 Workstation x86_64 (デスクトップ環境は標準のGNOME 3)をインストールしました。
そして日本語入力用にibus-mozcをインストールしました。
キーボードは英語キーボードです。
CtrlとCapsLockはホストOS側でSwap済み。
今回の件には多分関係ないですが、GNOME Tweak Toolをインストールしダークテーマに切り替えたりフォントを変えたりしてます。

「設定」→「地域と言語」の「入力ソース」は以下のような感じに設定。
Screenshot from 2015-11-07 20-11-46

英語キーボードなので「設定」→「キーボード」→「ショートカット」タブで以下のように入力ソースをAlt + `(grave)で切り替えるように設定。
Screenshot from 2015-11-07 20-15-55

あと、「ナビゲーション」の「ウインドウを切り替える」と「ひとつのアプリケーション内のウインドウを切り替える」(以下参照)は「無効」になってますが、デフォルトで内部的にAltと`(grave)を使用するショートカットが設定されている状態らしく、一旦別のショートカットキーを設定した後、BackSpaceで取り消すことで本当に無効にできるらしいです。(なんじゃそりゃw)
一応念のため本当に無効にしておきました。
Screenshot from 2015-11-07 20-21-36

この状態でAlt + `(grave)による入力ソースの切り替えは問題なく動作するのですが、ibus-mozcのデフォルトの入力モードが「ひらがな」ではなく「直接入力」なので、ログインして最初の1回だけはAlt + `(grave)で入力ソースを切り替え、さらに全角キー(英語キーボードなんで無いですけど)を押さないと日本語入力ができません。
これはめんどくさい。
もちろんibus-mozc側でもショートカットキーの設定ができるので、それで事足りれば問題ないわけですが、ibus-mozc側ではAltやSuperを使うショートカットが設定できないため、今回の目的には合わないわけです。
逆に言えば他のショートカットキーで良いならば、入力ソースから「英語 (US)」を削除し、/usr/share/ibus/component/mozc.xmlのleyoutにusを設定するだけで、ibus-mozc(「日本語 (Mozc)」)だけで英語キーボードを使いつつ問題なく日本語入力も使えるらしいです。(未確認)

今回このibus-mozcのデフォルトの入力モードが「ひらがな」ではなく「直接入力」になってる件を解決する方法を思いつきました。
簡単に言えば、デスクトップにログインしたタイミングで自動的にAlt + `(grave), 全角, Alt + `(grave)の入力を行う、といった感じです。

具体的には以下のスクリプトを見たもらったほうが早いでしょう。

#!/bin/bash
echo 'setting ibus-mozc...'

# ibus-mozcのデフォルト入力モード対策
# 日本語 (Mozc)に切り替えて全角キーを送信し英語 (US)に戻す
sleep 1 && \
xdotool keydown alt && sleep 0.2 && \
xdotool key grave && sleep 0.2 && \
xdotool keyup alt && \
for i in `seq 0 9`
do
  mozc=`ps -ef | grep 'ibus-engine-mozc' | grep -v grep | grep -v srvchk | wc -l`
  if [ $mozc -gt 0 ]; then
    sleep 1
    xdotool keydown Zenkaku && sleep 0.2 && \
    xdotool keyup Zenkaku && sleep 0.2
    break
  else
    sleep 1
  fi
done
sleep 0.2 && \
xdotool keydown alt && sleep 0.2 && \
xdotool key grave && sleep 0.2 && \
xdotool keyup alt

echo 'ibus-mozc setting done.'


sleep 1

xdotoolが今回のキモで、擬似的にキー入力を行ってくれるソフトウェアです。
dnfで普通に入ります。

sleepが入り乱れてますが、たまに取りこぼしがあるみたいで、ウェイト目的で念のため多めに入れています。
もっとちゃんと検証したら減らせるかも。

このスクリプトを今回 ~/.my_auto_start.sh という名前で保存しました。(いい名前が思い浮かばなかった…)
chmod -x ~/.my_auto_start.shもしておきました。

このスクリプトをデスクトップへのログイン時に実行する必要があるので、 ~/.config/autostart/my_auto_start.desktop というファイルを作成しました。
内容は以下のとおり。

[Desktop Entry]
Name=MyAutoStart
GenericName=My Auto Start Script
Comment=no comment
Exec=/home/<your user name here>/.my_auto_start.sh
Terminal=true
Type=Application
X-GNOME-Autostart-enabled=true

Execの行でスクリプトのパスを指定します。

重要なのはTerminal=trueのところです。
Terminal=falseだと何故か全角キーの入力がibus-mozcに認識されません。

Terminal=trueにしたせいで、ログイン時に数秒間GNOME Terminalが表示されるという微妙な感じになってしまうんですが、見た目で「動いてるな」っていうのが分かるのでまぁいいかと諦めています。

これでログアウトもしくは再起動してからログインするとスクリプトが動作し、自動的にibus-mozcの入力モードを「ひらがな」にしてくれるはずです。
あとはもう最初からAlt + `(grave)の入力だけで日本語と英語を切り替えながら入力できます。

余談。
ibus-mozcは色々な事情があって、将来性はほぼないみたいです。
Mozcのコードツリーからibus-mozcのソースが削除される予定に関して – いくやの斬鉄日記

次やその次のFedoraでは標準のソフトウェアリポジトリから削除、という事もあるかもしれませんね。
今から心の準備をしておきましょう。

コメント

以下ですが、Arch Linuxでアイスランディックキーボードですが、機能しました!
> /usr/share/ibus/component/mozc.xmlのleyoutにusを設定するだけで、ibus-mozc(「日本語 (Mozc)」)だけで英語キーボードを使いつつ問題なく> 日本語入力も使えるらしいです。(未確認)

コメントありがとうございます!

動くんですね~
確認していただいてほんとありがたいです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です



※画像をクリックして別の画像を表示

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください