29 Jul 2017, 06:53

Linuxの親指シフトでMozcが使える!oyainputが公開された・・・感動

Linuxの親指シフターにとって、感動的なソフトを発見してしまった。oyainput というソフト。

今までLinuxで親指シフトを利用しようとするときは、Anthyというあまり賢くないIMEを使うしかなかった。Google日本語入力のオープンソースであるMozcがつかえればいいのだが、これが今まで使えなかった。

それが、oyainputをつかうと、IMに Mozcを指定することができるのだ!これは感動的だ。感謝!!!

起動の不具合と解決方法2点

しかし、使おうとすると問題が発生。なんとか解決したのでメモ。

起動するとxmodmapの設定が無効になる

Linuxのキーボードのキーマップ(CtrlをCapsLockに割り当てるなど)を変更するために、xmodmapを利用しているのだけれども、その設定が oyainputを起動すると無効になってしまう。

なので、oyainputを叩いたあとに、

xmodmap ~/.xmodmap

を叩きなおすと、再度有効になった。ちょっと焦る。

起動するとキーボードが2つ検出される

multiple keyboard is detected.というメッセージがでる。Logicoolの BlueThoothマウスをつかっているのだが、これがキーボードとして認識されてしまう。なんとかしようとソースコードを調査。以下のコマンドを叩いて、キーボードを調べているようだ。

$ grep -E 'Name=|Handlers|EV=' /proc/bus/input/devices| grep -B2 'EV=1[02]001[3Ff]'
N: Name="AT Translated Set 2 keyboard"
H: Handlers=sysrq kbd event3 leds
B: EV=120013
--
N: Name="Logitech MX Anywhere 2"
H: Handlers=sysrq kbd mouse0 event5 leds
B: EV=12001f

なるほど、2つ現れる。ソースでは、正規表現でEV=120013,12001F,12001fの三種類をキーボードとして認識しているようだ。その部分を、120013のみ認識するように書き換えてコンパイル。

これはあまりよくない解決方法だけれども、これでmultiple keyboard is detectedというメッセージはでなくなった。

最後に自動起動設定

~/.profileに以下の二行を追加。

oyainput &
xmodmap ~/.Xmodmap

これで、立ち上がり時に自動起動するようになった。

01 Jan 2015, 14:54

SKK サーバを利用して Linux 環境で 親指シフト&Google 日本語入力ができた!

はじめに

Google 日本語入力がもっとも変換にすぐれているとおもう. mozc を利用したいところなのだけれども, 自分には mozc をつかえない致命的な問題があった.

それは・・・ 親指シフトに対応していないこと

Windows 環境では, GoogleIME + やまぶきの組み合わせで実現できていた. Linux 環境での IME は, ibus-anthy を利用していた.

しかし, 今日でそれもおわりだ! Linux 環境でも Google 日本語入力をする方法を偶然にも発見してしまった.

それは,SKK を利用するというワザ.

SKK とは

SKK は, IME の一種.

導入手順は過去記事を参照. 親指シフトにも対応している.

SKK Server で Google 日本語入力サーバにアクセスする

SKK Server という機能を利用すると, Google 日本語入力サーバにアクセスすることができる.

ローカル PC で SKK サーバを動かして, 日本語入力サーバにアクセスすることで, 親指シフト入力が出来るようになる.

install

gem install google-ime-skk

install できたら, google-ime-skk を実行する.

ddskk の設定

IP を設定してアクセスする.

(require 'skk-server)
;; 辞書サーバを利用する場合の設定
(setq skk-server-host "0.0.0.0"
      skk-server-prog "google-ime-skk" ;; パスは通っているようだ.
      skk-server-portnum 55100)

;; 辞書サーバが使用不能になると辞書ファイルを 
;; Emacs のバッファに読み込んで 検索を行う.
(setq skk-server-inhibit-startup-server nil) ;; 通信エラー時はローカル辞書を.
(setq skk-server-jisyo "~/.emacs.d/dic/SKK-JISYO.L")

(add-to-list 'skk-search-prog-list
         '(skk-server-completion-search) t)
(add-to-list 'skk-search-prog-list
         '(skk-comp-by-server-completion) t)

;; 一応手動で起動する手段を用意するが, 起動は OS 側で実施する予定
(defun my/boot-skk-server ()
  "Start SKK server"
  (interactive)    
  (unless (skk-server-live-p)
    (async-shell-command skk-server-prog (get-buffer-create "*google-ime-skk*"))
    (setq skkserv-process (skk-open-server-1))
    (when (skk-server-live-p)
      (set-process-coding-system skkserv-process 'utf-8 'utf-8))))

(defun my/skk-close-server ()
  (interactive)
  (when (skk-server-live-p)
    (skk-disconnect-server)
    (kill-process (get-buffer-process "*google-ime-skk*"))
    (message "Server disconnected")))
(add-hook 'kill-emacs-hook 'my/skk-close-server)

おわりに

以前の記事にも書いたのだけれども, どうも SKK の打鍵方法と NICOLA は相性が悪い気がする. 文節のあたまで打鍵をする必要があるため, いままでに比べて打鍵数が増えているきがするのだ.

まだ慣れていないだけの問題なのだろうか??

しばらく様子見だけれども, そのうちどうするかは決定する. いまは, 長い文章を一気に変換できることに快感を覚えている.