Hatena::ブログ(Diary)

わからん

2012.09.25

[][][]Ubuntu12.04 での Google日本語入力(mozc) の導入/設定

Ubuntu12.04 へ Google日本語入力(mozc) を導入する手順と設定例を紹介します。GUI の mozc と emacs の mozc、両方紹介します。


 GUI の mozc をインストールする


sudo apt-get install ibus-mozc します。OS を再起動します。画面上部の黒い領域(システムトレイ?)にキーボードのアイコンがある場合はそれをクリックします。


f:id:kitokitoki:20120925170556p:image


手元の環境ではこのキーボードのアイコンが表示されないことがありました。その場合は、左上の Unity Dash Menu で ibus と入力し、「キーボードインプットメソッド」をクリックします。


f:id:kitokitoki:20120925175104p:image


IBus の設定ウィンドウが現れます。インプットメソッドタブをクリックします。[日本語-Mozc] を選択し、右側の [上へ] ボタンで、一番上へ移動させます。おそらく [日本語-Anthy] と順番を逆転させることになると思います。


f:id:kitokitoki:20120925235208p:image


▼ GUI の mozc で候補を表示している様子

f:id:kitokitoki:20120925170555p:image


 mozc の設定ウィンドウへアクセスしやすくする


/usr/lib/mozc/mozc_tool は、GUI の mozc と、後述する emacs の mozc で共通に利用する設定ツールです。たとえば C-n/C-p で候補を移動する手軽な方法は、[キー設定の選択] で [ことえり] を選択します。次のような mozc_tool へのショートカットコマンドを作成すると便利です。.bashrc に以下のように追記します。mozc-config は、キーバインドなど設定全般へのコマンドとなります。mozc-dict は辞書登録ウィンドウを一発で開くショートカットコマンドです。

  alias mozc-config="/usr/lib/mozc/mozc_tool -mode=config_dialog"
  alias mozc-dict="/usr/lib/mozc/mozc_tool --mode=dictionary_tool"

▼ mozc-config コマンドで設定ウィンドウを開いている様子

f:id:kitokitoki:20120925170554p:image


▼ mozc-dict コマンドで辞書登録ウィンドウを開いている様子

f:id:kitokitoki:20120925170553p:image


 emacs の mozc をインストールする


sudo apt-get install emacs-mozc emacs-mozc-bin で emacs で利用する IM としての mozc をインストールします。手元の環境では、mozc.el は以下のように配置されました。

/usr/share/emacs23/site-lisp/emacs-mozc/mozc.elc
/usr/share/emacs/site-lisp/emacs-mozc/mozc.el

.emacs または init.el では最低限次のように設定します。

(require 'mozc)
;; or (load-file "/path/to/mozc.el")
(set-language-environment "Japanese")
(setq default-input-method "japanese-mozc")

GUI の候補選択ウィンドウのようにカーソルの直下に候補をぶら下げるには、次のように設定します。

(setq mozc-candidate-style 'overlay)

▼ emacs の mozc で「いま」と入力し変換候補を表示している様子

f:id:kitokitoki:20120925172305p:image

ターミナルで XMODIFIERS=@im=none emacs と入力し、M-x toggle-input-method すると、上のように、emacs の mozc を利用できるようになります。起動を簡単にする方法は後述します。


 key-chord.el との併用


key-chord.el を使っている場合、日本語入力モード(mozc-mode) に変更した初回の同時押し時にコマンドの実行に失敗して、普通に 2文字印字されてしまいます。この現象は、次のような設定を追記することで回避できます。

(require 'key-chord)
(key-chord-define mozc-mode-map "aa" "aa")

 日本語入力時(mozc-mode) にも自前のコマンドを割り当てる


グローバルなキーマップに割り当てていたコマンドが mozc-mode 時に打ち消されてしまうことがあります。その場合は、mozc-mode-hook で mozc-mode-map に登録します。

(add-hook 'mozc-mode-hook
  (lambda()
    (define-key mozc-mode-map (kbd "C-a") 'my-move-beginning-of-line)
    (define-key mozc-mode-map (kbd "C-e") 'my-end-of-line)
    ))

;;;; 別のところで, C-a, C-e に対し、以下のような設定がされていると想定している

;; (defun my-move-beginning-of-line ()
;;   (interactive)
;;   (if (bolp)
;;       (back-to-indentation)
;;       (beginning-of-line)))

;; (global-set-key (kbd "C-a") 'my-move-beginning-of-line)

;; (defun my-end-of-line ()
;;   (interactive)
;;   (end-of-line)
;;   (if (eq real-last-command this-command)
;;       (delete-horizontal-space)))

;; (global-set-key "\C-e" 'my-end-of-line)

 日本語入力モード時はカーソルの色を変える


GUI の mozc ではなく、emacs の mozc を使うメリットの一つは、いま日本語入力モードなのか、半角英数入力モードなのかを、カーソルの色で判別できることだと思います。私は以下のように設定しています。

(setq mozc-color "blue")

(defun mozc-change-cursor-color ()
  (if mozc-mode
      (set-buffer-local-cursor-color mozc-color)
    (set-buffer-local-cursor-color nil)))

(add-hook 'input-method-activate-hook
          (lambda () (mozc-change-cursor-color)))

(if (featurep 'key-chord)
    (defadvice toggle-input-method (after my-toggle-input-method activate)
      (mozc-change-cursor-color)))

▼ 半角英数入力モードのときのカーソル

f:id:kitokitoki:20120925174249p:image


▼ 日本語入力モードのときのカーソル

f:id:kitokitoki:20120925174248p:image


 全角半角、カタカナ/ひらがなキーで、日本語入力/半角英数入力をトグルで切り替える


この設定がほしくなる人は少ないかもしれません。私は、スペースの2つ右隣の [カタカナ/ひらがな] を [全角半角] に変更しています。手元のパソコンでは .Xmodmap で以下のように設定しています。

!カタカナひらがな を 全角半角へ
keycode 101 = Zenkaku_Hankaku Kanji Zenkaku_Hankaku Kanji Zenkaku_Hankaku Kanji

この場合の [カタカナ/ひらがな]、 [全角半角] の押下で、日本語入力/半角英数入力をトグルで切り替えるには、かなり工夫が必要で、以下のように設定します。

;; 全角半角キー対応のために上書き
(defsubst mozc-session-sendkey (key-list)
  "Send a key event to the helper process and return the resulting protobuf.
The resulting protocol buffer, which is represented as alist, is
mozc::commands::Output in C++.  Return nil on error.

KEY-LIST is a list of key code(97 = ?a) and/or key symbols('space, 'shift,
'meta and so on)."
  (when (equal '(zenkaku-hankaku) key-list) ; 全角半角だった場合は強引に C-\ だったことにする
    (setq key-list '(110 control)))         ; (110 control) は C-\ に対応しているはず
  (when (mozc-session-create)
    (apply 'mozc-session-execute-command 'SendKey key-list)))

 emacs で GUI の mozc ではなく emacs の mozc を優先させる


GUI の mozc と emacs の mozc に同じキーを割り当てたとき、emacs がアクティブな場合は、emacs の mozc を優先させる方法を紹介します。以下の内容の ~/bin/emacs を作成し、PATH で /usr/bin/emacs などよりも優先されるようにします。これで ターミナルから起動する場合はうまくゆきます。

#!/bin/bash
XMODIFIERS=@im=none emacs

次に左側のランチャーアイコンをクリックする場合の対策です。


f:id:kitokitoki:20120925180317p:image


以下の内容の ~/.local/share/applications/emacs.desktop を作成し、実行権限を付与します。Exec=/home/m/bin/emacs のところは適切に置き換えて下さい。

[Desktop Entry]
Version=1.0
Name=GNU Emacs 23
GenericName=Text Editor
Comment=View and edit files
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
Exec=/home/m/bin/emacs
TryExec=emacs23
Icon=/usr/share/icons/hicolor/scalable/apps/emacs23.svg
Type=Application
Terminal=false
Categories=Utility;Development;TextEditor;
StartupWMClass=Emacs23

あとはこのファイルを、Nautilus などの GUI のファイラーでダブルクリックで開き、ランチャーにアイコンが表示されたときに、そのアイコンを右クリックし、[Lancher への登録] を押下すれば、完了です。nautilus 上のアイコンをランチャーにドラッグ&ドロップでも、登録できます。

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

Google