LoginSignup
8
9

More than 5 years have passed since last update.

ChromeBook におけるテキスト入力環境の改善について

Last updated at Posted at 2017-02-01

 はじめに

 私は、Asus FlipというChromeBookを普段使っています。
 幸いこのマシンは、ChromeOS, Andoroid, Linuxを同時に実行できますので、使えるアプリケーションの選択の幅は、かなりあると思います。
 しかし、それでもどうしても満足できないのが、ほかならぬテキスト入力の環境だと言えます。
 ChromeOS上のテキスト・エディターにもかなり使えるものはあるのですが、そのどれもがまともに日本語入力ができません。たとえば、私が気に入ってるCaretといのがありますが、これは日本語の入力はできるのですが、なんとIMEのオンオフの切り替えができないのです。ですから、ブラウザにでも戻ってIMEの切り替えをして、もう一度Caret画面に戻ります。
 ネット上で推奨されているエディターについては、どれも「冗談でしょう、こいつで文字を打つのか」と、思えるものばかりで、まあWindowsのメモ帳以下でしょう。
 では、Androidのエディターでも使おうかと思って試してみましたが、そもそもここにもいいエディターは皆無でした。
Jotaというのが人気があるようですが、やはり「こんな程度の代物しかないのか」、という感じです。これと比べるならば、WindowsのSakuraが、神に見えます。いや、MS-DOS時代のVZが懐かしく感じました。
では、Linuxはどうかというと、現在ではIntelチップ上ではものすごく優秀なエディターがいくつかあるのですが、悲しいかなArm7上では、そういうものは無いのです。
 結局、コンソール上でVimでも使うしかないか、というのが私の結論でした。

問題点

 ここで問題になるのが、以下の2点です。

  • ChromeOSのCrosh上で、そもそもどうやって日本語を入力できるようにするか。
  • ChromeOSのCroshウインドウ(ブラウザの1タブ)とChoromeOSのクリップボードの不完全なカットアンドペースト環境を、どうやって改善するか。

 前者については、実に乱暴な方法で解決してしまいました。
 前投稿「ChromeBook KaliLinux の奇妙な使い方」で書きましたが、ようするに、人間パッケージマネージャーになって、Kaliのバイナリーを手動でChromeOSにインストールしたのです。
 Locale環境の構築 → uim-fep, uim-mozcのインストールでなんとかしのいでしまいました。

 さて、後者ですが、そもそもどういう状況かというと、Crosh → ChromeOSクリップボードは、なんとか多言語でもOKなのですが(ただし、タッチパッドで選択貼付)、その逆については、ASCII文字以外はすべて化けしてしまうのです。
 これはかなり深刻で、だいぶ考えたのですが、長い間うまい解決方法が見つかりませんでした。

 ところが、とうとうその解決方法を見つけました。
 というか、解決した人がいたのです。そう、Croutonの作者による、Croutonクリップボードです。
 このCroutonクリップボードは、Croutonとは直接関係がありません。ChromeOSのクリップボードとコンソール環境を繋ぐXselのようなプログラムです。
 以下、これの導入方法について詳しく述べます。といのも、作者さんのインストール時の環境設定では、絶対まともに動かないからです。本人も「私自身は試していないが」などと述べています。はい、動きません。
 しかし、インストラーの環境設定がいいかげんなだけで、本体プログラムはすばらしいのです。
 これを丁寧に動くようにしましょう。そして、すこしばかり使いやすいように、改良しましょう。
 まあ、Vimの設定を変更するだけですが。

CroutonクリップボードのインストールとVimでの設定

 まず、インストールするところまでは、作者さんの指示どうりで問題ありません。
 作者さんのページに書いてあることを、以下に転記します。
 なお、前提として、ChromeOSにnode.jsがインストールされてなければなりません。

 まず、以下を実行して、ChromeOSクリップボード監視サーバーをインストールする。

curl -sL https://cdn.rawgit.com/zwhitchcox/crouton-clipboard/c7d055f2ea0a2c23f6874c623fff9d23f6f0b431/install.sh | sh

 このサーバーは、単独で機能するのではなく、Chrome拡張機能Crouton Clipoardと連携して機能する。
 ということでchrome Webstoreからこれをインストールする。

 つぎに、インストーラーが勝手に書き換えたファイルを修正する。
 まず、.bashrcにおけるサーバー自動起動をコメント化する。
 毎回bashを起動するたびに、サーバーを起動する必要はない。
 OSブートした後、一回だけ立ち上げればよい。手動で起動しましょう。

# node ~/.crouton-clipboard/server.js &

 つぎに、.vimrcに加えられた記述もコメント化する。

" nnoremap "*p :r !cat /home/chronos/user/.crouton-clipboard/data.txt<CR>
" vnoremap "*y :'<,'>w! /home/chronos/user/.crouton-clipboard/data.txt<CR>

 これは、動かない。
 Windows版と違ってLinux版では、*レジストはほとんどのVimで実装されていない。
 しかし、上記動作は上書きできないように設定されている場合が多い。
 敢えて書くと、

nnoremap "@@ :r !cat /home/chronos/user/.crouton-clipboard/data.txt<CR>
vnoremap "@@ :'<,'>w! /home/chronos/user/.crouton-clipboard/data.txt<CR>

 と、でもすれば動作する。
 しかしこれでは、期待する動作とはならない。
 これでは、カレント行の下に文字列が挿入され、vmodeにおける文字単位の選択領域は無視され、カレント行がクリップボードにコピーされてしまう。
 以下のようにすれば、一般的なエディターのカットアンドペーストの動作となる。

function FromClip()
   let f = readfile("/home/chronos/user/.crouton-clipboard/data.txt")
   let @0 = join(f,"\n")
   let @" = @0
endfunction
function ToClip()
   call writefile(split(@","\n"),"/home/chronos/user/.crouton-clipboard/data.txt")
endfunction
nnoremap <C-@> i<Esc>:call FromClip()<CR>p
vnoremap <C-@> <Esc>i<Esc>:call FromClip()<CR>p
inoremap <C-@> <Esc>:call FromClip()<CR>pi
vnoremap @! y:call ToClip()<CR>

 モードに関係なく、Ctrl+@で、カーソル位置にクリップボードの内容がコピーされる。
 vmodeでは、@!で、選択領域がクリップボードにコピーされる。
 以上で、少なくともChromeとCroshとの間のカットアンドペーストは可能になる。

 もちろん、これでもまだ十分ではない。
 なぜなら、Chrome内で動作している場合に限って、Crouton Clipboardは機能するのであり、独立したアプリケーションからクリップボードにコピーされた内容は監視できない。
 逆に、Vimから貼り付けられた文字列は、独立したアプリケーションでも使える。

 以上、なかなか100%の解決とはいかないが、少なくともWebページのコピーをVimに貼付けられるので、実用上では大きな改善である。やっと、使う気にさせる最低限度の水準に達した、と思われる。

 もちろん、この程度の環境では、居心地が良いとはお世辞にも言えないだろう。
 プログラムやマークアップを全く書かないのなら、短いメモはGoogleKeep、長いものはGoogleDocumentを使うのが、素直かつ最善の選択であるように思う。まあ、そういう使い方を想定したOSですから。

 想定された使い方をしない者たちの労苦は、これからも果てしなく続く。

8
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9