« 2012年8月 | トップページ | 2012年10月 »

2012年9月の11件の記事

2012年9月27日

MacTypeを使わずにFirefoxの文字表示をきれいにする方法

Windowsのフォントレンダリングはあまり評判がよくない。対策として、仕事用PCのWindows XPでgdippを半年くらい使っている。2010年の0.9.1を最後にアップデートがとまっているが、私の環境では特に問題ない。

Windows 7はDirectWriteなどによってフォント表示品質を改善している。秀丸エディタはメイリオやLucida Consoleを使い、3DグラフィックスアクセラレータをオンにするとDirectWriteで文字描画する。OfficeソフトがどのバージョンでDirectWriteを使っているか分からないが、MSゴシック・MS明朝以外のフォント、たとえばHGSゴシック・HGS明朝を使えば、DirectWriteでなくても問題ない。

問題はFirefoxである。デフォルトフォントをメイリオに設定していても、MS Pゴシックをfont-familyで指定するWebページが残念な見栄えになる。代表的なところはYahoo! Japanのトップページだ。

巷ではMacTypeの評判がよく、gdippより断然きれいだという話も聞くが、要するにMS Pゴシックを使わないようにすればいいのである。調べると、FirefoxのユーザCSSなどを活用すればよいことが分かった。以下、その手順をまとめる。

コントロールパネルの「ClearTypeテキストの調整」(ClearType Tuner)

モニタや自分の好みに合わせて表示を調整する。これをやっておけば、同じメイリオでもだいぶ見栄えがよくなる。

Firefoxフォントを以下のように設定する(オプション → コンテンツ → フォントと配色 → 詳細設定)

プロポーショナル:ゴシック体(Sans-serif)
明朝体(Serif):HGS明朝B
ゴシック体(Sans-serif):メイリオ
等幅(Monospace):HGゴシックM

HGフォントはマイクロソフトOffice付属のフォントである。Officeが入っていない場合は、明朝体をMS P明朝に、等幅をMSゴシックにする。あるいはIPAフォントを使う。どちらもそれほど美しくないが、明朝体や等幅フォントが必要な場面は多くないと割り切る。

Firefoxのハードウェアアクセラレーションをオンにする(オプション → 詳細 → 一般)

実際にオンになっているかどうかをabout:support(ヘルプ → トラブルシューティング情報)で確認する。「DirectWrite 有効」がtrueになっていればよい。グラフィックスドライバによってはfalseになってしまうかもしれない。

ユーザCSSでフォント置き換え

userContent.cssをFirefoxプロファイルフォルダのchormeディレクトリ内に作る。ファイルはUTF-8エンコーディングで作らなければならない。ファイルの内容は以下の通り。

@charset "UTF-8";

@font-face {
  font-family: "MS Pゴシック";
  src: local("メイリオ"), local("Meiryo");
}
@font-face {
  font-family: "MS PGothic";
  src: local("メイリオ"), local("Meiryo");
}

以上でMS Pゴシックを指定したWebページもメイリオできれいに表示できるようになる。どれも標準機能の範囲なので、MacTypeの開発が続くのかどうかとか、新しいOSでもサポートされるのか、ソフトとの相性はどうかなどを気にしなくてよい。

| | コメント (1)

ソースコード表示に適したフォントAdobe Source Code Pro

Adobeがソースコード表示に適したモノスペース(等幅)フォントSource Code Proを公開したので試してみた。いつもはLucida Consoleを使っている。OSはWindows XP。マシンはThinkPad X201(インテルHDグラフィックス)、ディスプレイはDell E2310Hである。

Adobeのブログにダウンロードリンクがある。ところで、このブログに出ているスクリーンショットはSolarizedカラースキームじゃないだろうか。

Announcing Source Code Pro « Typblography
https://blogs.adobe.com/typblography/2012/09/source-code-pro.html

文字の上下スペースをゆったり取ってあるのか、同じウインドウサイズに表示される行数がだいぶ減る。いつものputtyウインドウサイズでLucida Consoleが45行なのに対して、Source Code Pro Semiboldは36行で、約8割になる。Lucida Consoleのぎっしり感と、一度に目に入る情報量の多さに慣れていると、だいぶ間延びして見える。

Lucida Consoleに対する利点は、ゼロの丸の中に点が入っていて、アルファベットのオー(o、O)と区別しやすくなることだ。数字の1と小文字のエル(l)と小文字のアイ(i)はLucida ConsoleでもSource Code Proでも同じくらい判別しやすい。

日本語を表示するとかなり残念なことになる。日本語文字が入ってないからで、これはLucida Consoleでも同じである。Windowsのフォントリンク機能でMS UIゴシックを割り当てた。次のレジストリキーの下にSource Code ProというREG_MULTI_SZ値を作り、MSGOTHIC.TTC,MS UI Gothicを設定する。ウエイト別に6つのファイルがあるから、それぞれ設定する必要がある。強度近視の私の目には、レギュラーウエイトとSemibod以外は使い道がないので、この2つを設定した。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink

あまり美しい日本語表示ではないが、デフォルトよりマシという感じである。リンクした和文フォントがきれいに表示できないのは、ベースの欧文フォントのサイズに、同じポイント数の和文フォントのサイズを合わせようとするからである。Windows XPは対処の手がないが、Vista以降でスケーリングのパラメータを指定できるようになった。これをいじればなんとかなるかもしれない。MSDNの以下の文書のFont Linkingの項を参照。

Globalization Step-by-Step: Fonts
http://msdn.microsoft.com/en-us/goglobal/bb688134.aspx

で、しばらくLucida ConsoleとSource Code Proを取っかえ引っかえして比べてみたのだが、結局Lucida Consoleの方が見やすい(見慣れている?)という結論に達した。

(参考記事)
ConsolasをIE( or putty or gVim et al.)で使う - 田中慎司のログ
http://d.hatena.ne.jp/stanaka/20060914/1158208602

 

| | コメント (1)

2012年9月25日

リモートサーバのコマンドを公開鍵SSHで自動実行

サーバAからサーバBにSSHで接続してコマンドを実行するという自動化スクリプトで、パスワード入力を省くために公開鍵・秘密鍵のペアによるSSH接続を使った。

まずサーバBにログインして鍵ペアを生成する。パスフレーズを設定すると、ssh-addで鍵を登録するときに入力を求められる。今回は自動化スクリプトなので、パスフレーズを設定せず、空Enterする。これで.sshディレクトリの下に秘密鍵id_rsaと公開鍵id_rsa.pubが作られる。

srv-b:~# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/XXXX/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /XXXX/.ssh/id_rsa.
Your public key has been saved in /XXXX/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx xxxx@srv-b


公開鍵を.ssh/authorized_keysに書き込む。このファイルのパーミッションは600でなければならない。

srv-b:~/.ssh# cat id_rsa.pub >> ~/.ssh/authorized_keys
srv-b:~/.ssh# chmod 600 authorized_keys


秘密鍵をサーバAにコピーし、適当な名前にリネームする。

srv-a:~# mv id_rsa id_rsa_srv-b

鍵ペアによるSSH接続は、ssh-agentを起動し、ssh-addで鍵を登録する。対話セッションであれば、ターミナルからeval `ssh-agent`で起動する。これにより環境変数SSH_AGENT_PIDなどが設定され、後続のコマンドで利用できるようになる。終了コマンドはssh-agent -kである。

今回はバックグラウンドで実行する自動化スクリプトなので、必要なときだけssh-agentを起動して、その都度終了することにした。さらに、ssh-agentの引数に、リモート側(サーバB)で実行するコマンド群をシェルスクリプトで与える。シェルスクリプトはフルパスで指定しなければならない。

親のスクリプト

[...]
ssh-agent $dir/ssh_cmd.sh $node
if [ $? -ne 0 ]; then
    echo "Cannot connect to $node"
    exit 1
fi
[...]

ssh_cmd.sh

[...]
ssh-add id_rsa_$node
ssh $node 'リモートで実行するコマンド'
[...]

こうしておけば、リモート側でコマンドが終了すると、セッションが切れるとともにssh-agentも終了する。

| | コメント (0)

vimのconfigureがで「ncurses library is not usable」で失敗

ひとつ前の記事で書いたようにRHEL4でvim 7.3をコンパイルしようとしたら、configureがエラーになってしまった。

[...]
checking --with-tlib argument... empty: automatic terminal library selection
checking for tgetent in -ltinfo... (cached) no
checking for tgetent in -lncurses... (cached) yes
ncurses library is not usable
checking for tgetent in -ltermlib... no
checking for tgetent in -ltermcap... no
checking for tgetent in -lcurses... no
no terminal library found
checking for tgetent()... configure: error: NOT FOUND!
      You need to install a terminal library; for example ncurses.
      Or specify the name of the library with --with-tlib.


「ncurses library is not usable」というエラーだが、cursesはdevパッケージを含めてインストールされている。

$ rpm -qa | grep ncurses
libncurses5-mipsel-cross-5.5-6
ncurses-devel-5.4-15.el4
ncurses-5.4-15.el4
libncurses5-dev-mipsel-cross-5.5-6


locateで検索できるが、MIPSクロスコンパイラ環境のライブラリが悪さをしているか、slocate.dbデータベースが古いため、configureがエラーになるようだ。

$ locate ncurses.h
warning: locate: warning: database /var/lib/slocate/slocate.db' is more than 8 days old
/usr/include/ncurses.h
/usr/include/ncurses/ncurses.h
/usr/include/ncursesw/ncurses.h
/usr/mipsel-linux-gnu/include/ncurses.h
[...]
$ locate libncurses
warning: locate: warning: database /var/lib/slocate/slocate.db' is more than 8 days old
[...]
/usr/lib/libncurses.so.5.4
/usr/lib/libncurses_g.a
/usr/lib/libncurses++.a
/usr/lib/libncursesw_g.a
/usr/lib/libncursesw.so.5
/usr/lib/libncursesw.a
/usr/lib/libncurses.so.5
/usr/lib/libncursesw.so
/usr/lib/libncurses.so
/usr/lib/libncursesw.so.5.4
/usr/lib/libncurses.a
/usr/lib/libncurses++w.a
[...]
/usr/mipsel-linux-gnu/lib/libncurses++.a
/usr/mipsel-linux-gnu/lib/libncurses.so.5
/usr/mipsel-linux-gnu/lib/libncurses.so
/usr/mipsel-linux-gnu/lib/libncurses.a

次のメールスレッドを参考にして環境変数をセットしてみた。

Vim - General - problem compiling vim70.
http://vim.1045645.n5.nabble.com/problem-compiling-vim70-td1155619.html

$ export CPPFLAGS=-I/usr/include/
$ export LDFLAGS=-I/usr/lib/
$ env | grep FLAG
LDFLAGS=-I/usr/lib/
CPPFLAGS=-I/usr/include/

改めてconfigureする前に、キャッシュファイルauto/config.cacheを削除する必要がある。

$ ./configure --prefix=/home/xxxx/vim73 --enable-multibyte --with-features=huge --disable-selinux
configure: loading cache auto/config.cache
configure: error: `LDFLAGS' was not set in the previous run
configure: error: `CPPFLAGS' was not set in the previous run
configure: error: in `/home/xxxx/vim73-src/src':
configure: error: changes in the environment can compromise the build
configure: error: run `make distclean' and/or `rm auto/config.cache' and start over
$ rm src/auto/config.cache


これでconfigureが成功した。makeとmake installも問題なく終わり、vim 7.3が使えるようになった。

$ ./configure --prefix=/home/xxxx/vim73 --enable-multibyte --with-features=huge --disable-selinux
configure: creating cache auto/config.cache
[...]
config.status: creating auto/config.mk
config.status: creating auto/config.h


| | コメント (0)

自分専用のvim 7.3を共用サーバにインストール

会社の共用サーバはいまだにRHEL 4で、vim 6.3という古いバージョンが入っている。7.2や7.3用に作った.vimrcでエラーが出てしまう。自分専用の7.3をインストールしてしまうことにした。

参考にしたのはこのブログ。

CentOS 5.5 にVim7.3をソースからインストール - ITコンサルタント成長録
http://d.hatena.ne.jp/hosikiti/20100910/1284079341

ソースコードはここにある。

vim 7.3本体
http://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2

パッチ
http://ftp.vim.org/pub/vim/patches/7.3/


まずソースをダウンロードして展開する。

$ tar jxvf vim-7.3.tar.bz2

001から最新(8月3日時点で622)までのパッチをダウンロードする。

$ mkdir patches
$ seq -f http://ftp.vim.org/pub/vim/patches/7.3/7.3.%03g 622 | xargs wget

パッチをソースに適用する。

$ cd vim73
$ for i in `ls ../patches/7.3.*`; do patch -p0 < $i; done

configureする。通常は/usr/localの下にインストールするのだろうが、自分専用のvimバイナリを共有サーバに作りたいので、ホームディレクトリの下にインストールする。その他のオプションは上記のブログに書いてあったものを拝借した。

$ ./configure --prefix=/home/xxxx/vim73 --enable-multibyte --with-features=huge --disable-selinux

makeしてインストールする。

$ make
$ make install

/home/XXXX/vim73の下にbinとshareのディレクトリができているはず。

.bashrcでPATHなどを設定する。ホームディレクトリのvimバイナリを先に検索するように設定する。

export PATH=~/vim7.3/bin:$PATH
export EDITOR=vim
export VISUAL=vim
alias vi='vim'

EDITORとVISUALは主にsudoeditのための定義である。最後のエイリアス設定は、Linuxのデフォルトプロファイル(/etc/profile.d/vim.shなど定)で定義済みのはず。

ログインし直して、vi、vim、gvim、sudoeditを起動し、:versionコマンドでバージョンを確認する。次のように表示されれば、ソースからインストールしたvimが動いている。ほかのバージョンが出てきたときは、環境変数がどこかおかしい。

VIM - Vi IMproved 7.3 (2010 Aug 15, compiled MMM DD YYYY hh:mm:ss)
Included patches: 1-622

| | コメント (0)

2012年9月14日

TerminatorとGuakeをSolarizedカラースキームで使う

Ubuntu 11.10にTerminatorとGuakeをインストールしたが、起動時にGtkの警告が出る。

Gtk-WARNING **: Unable to locate theme engine in module_path: "pixmap"

gtk2-engines-pixbufがインストールされてないからである。apt-get install gtk2-engines-pixbufを実行すればよい。

Gtk-WARNING **: Unable to locate theme engine in module_path: “pixmap” « Ubuntu Technical
https://ubuntutechnical.wordpress.com/2011/11/7/gtk-warning-unable-to-locate-theme-engine-in-module_path-pixmap/

Ubuntu -- oneiric の gtk2-engines-pixbuf パッケージに関する詳細
http://packages.ubuntu.com/oneiric/graphics/gtk2-engines-pixbuf

人気のターミナルソフトだけあって、どちらもSolarizedカラースキームがある。

Solarized terminator colors
https://github.com/ghuntley/terminator-solarized

Solarized Colorscheme for Guake
https://github.com/coolwanglu/guake-colors-solarized

Guakeの方は、そもそもが他のウインドウの上に覆い被さってくる透明なターミナルなので、Solarizedカラースキームを使っているといっても、見た目がかなり異なる。vimではlightカラースキームを使っているが、Guakeではdarkの方が見やすい。このカラースキームはgconftool-2でGconfリポジトリの設定情報を書き換えている。元に戻せるようにデフォルトの設定をメモしておく。

/apps/guake/style/background/color
#000000000000

/apps/guake/style/font/color
#ffffffffffff

/apps/guake/style/font/palette
#000000000000:#cccc00000000:#4e4e9a9a0606:#c4c4a0a00000:#34346565a4a4:#757550507b7b:#060698209a9a:#d3d3d7d7cfcf:#555557575353:#efef29292929:#8a8ae2e23434:#fcfce9e94f4f:#72729f9fcfcf:#adad7f7fa8a8:#3434e2e2e2e2:#eeeeeeeeecec

| | コメント (0)

UbuntuでNISドメイン設定間違い

Ubuntu 12.04 LTSにNISをインストールしたが、NISサーバに繋がらずちょっと悩んだ。結局は単にドメイン名を間違っていただけだった。以下、メモ書き。

「apt-get install nis」でNISパッケージをインストールすると、途中でNISドメイン名を入力する画面が出てくる。ここでタイプミスしてしまったらしい。この入力値は/etc/defautdomainに反映され、domainnameコマンドで表示される。

タイプミスに気付かず、NISサーバを/etc/yp.confに定義し、システムをリブートした。ypbindの再起動だけでもよかったかもしれない。

NISサーバと通信できるかどうかをypcat passwdで確認したが、次のエラーになってしまった。

YPBINDPROC_DOMAIN: Domain not bound
No such map passwd.byname. Reason: Can't bind to server which serves this domain

ypbindが動いてないときもこのエラーが出るようだが、今回は動いていた。service ypbind stopで停止し、ypbind -debug -no-dbusでデバッグモードにしてみた。しかし特にエラーは出ていない。

「ypcat -d <ドメイン名> passwd」とドメイン名を明示したら情報を取ってこれる。どうやらデフォルトのドメイン名がおかしいということに気がついて、/etc/defaultdomainと/etc/yp.confをじっくり見比べたら、/etc/defaultdomainのドメイン名が一文字抜けていた。ここを修正したらypcap passwdが動くようになった。su - でログインも成功した。

| | コメント (0)

Ubuntu 12.04にNISアカウントでログイン

仕事環境のUbuntu 10.04 LTSはローカルのアカウントとNISのアカウントを使い分けている。ログイン画面に並んで出てくるので、どちらかを選んでパスワードを入れる。それ以外のアカウントを使うときは「Other」を選べばよい。ところがUbuntu 12.04 LTSはこれが出てこない。

10.04はデスクトップマネージャがgdmで、12.04はlightdmなのが原因のようだ。12.04をgdmにしてしまうという方法もあるようだが、lightdmのままで複数アカウントを使い分ける設定にした。参考にしたのは以下の記事である。

Howto: Login as “Other” User from Login Screen | Login Options | Ubuntu 12.04 LTS Precise Pangolin @ All Linux User's Blog
http://www.tejasbarot.com/2012/04/30/howto-other-login-option-on-login-screen-ubuntu-12-04-lts-precise-pangolin/

lightdmの設定ファイル/etc/lightdm/lightdm.confをバックアップしておき、次のコマンドを実行する。

/usr/lib/lightdm/lightdm-set-defaults -m true

システムを再起動すれば、ログイン画面に「Login」というメニューが現れる。これをクリックしてNISアカウント(あるいは他のローカルアカウントやLDAPアカウント)を入力する。次回からはそのアカウントがローカルアカウントと並んで表示されているので、どちらかを選べばよい(表示されないときは、再度Loginを使う。

ちなみにこのコマンドで/etc/lightdm/lightdm.confに次の行が追加される。「greeter」というのは、「ようこそ画面」という意味だろうか。

[SeatDefaults]
...
greeter-show-manual-login=true


| | コメント (0)

VMwareゲストUbuntu 12.04 LTSの3Dグラフィックス・アクセラレーション

ThinkPad X201(Windows XP SP3 32ビット)のVMware Player 5にUbuntu 12.04 LTSをインストールしたところ、起動してログイン画面が出てくるところまでは問題ないが、ログインすると完全に固まってしまった。壁紙が表示されるだけで、Unityメニューもランチャーも出てこない。仮想マシンをリセットするしかない。

Unity 2Dを選んでログインすると問題ないので、仮想マシン設定のディスプレイで「3D グラフィックス アクセラレーション」をオフにしてみた。これで安定して動くようになった。

VMware Playerのヘルプで以下のように書いてあり、Linuxゲストは3Dアクセラレーションをサポートしてないようだ。

グラフィックス アクセラレーション機能は、Windows または Linux を実行しているホスト上の Windows XP、Windows Vista、および Windows 7 ゲストに対して適用されます。

ただしDell Precision T1500(Windows 7 64ビット)とUbuntu 12.04や、ThinkPad X201とUbuntu 11.10の組み合わせでは、ここをオンにしていても問題なくUnity 3Dで動く。ネットで検索しても、ハングする問題は見つからない。もともとサポートしてないところに、X201のグラフィックスドライバかなにかとの食い合わせが悪かったのだろうか。

| | コメント (0)

UbuntuにLubuntuデスクトップをインストール

【まとめ】

Lubuntuデスクトップ環境(lubuntu-desktop)がUbuntuソフトウェアセンターで見つからないときは、次のどちらかを試す。
(1)Update Managerでアップデートをチェックする(インストールする必要はない)
(2)Ubunto 11.10以前の場合はUbuntu 12.04 LTSへのアップグレードを起動して、途中でキャンセルする。これもインストールする必要はない。
「apt-cache search lubuntu」で検索して見つからないときも同様の対処でよいはず。
会社などでプロキシサーバを経由するときは、/etc/apt/apt.confに設定しておく。

Ubuntu 12.04 LTSのインストーラはCPUのPAEを要求する。非対応CPUの場合は、11.10以前のバージョンをインストールした後に12.04にアップグレードする。

【経緯】

以前使っていたThinkPad T42が遊んでいるので、Ubuntuでも入れて再活用しようと思った。Windows XPを入れ直してもいいのだが、メインでWindows 7を使っているのに、いまさらXPを使うのは芸がない。そこでUbuntu 12.04 LTSをインストールしようとしたが、インストーラが動かない。CPUのPAE〔物理アドレス拡張〕が必須で、T42のPentium Mにはこれがない。11.10以前のバージョンでインストールしてアップグレードするしかないようだ。

HDDにインストールする前に11.10のLive DVDで動かしてみたところ、案の定レスポンスがよくない。Pentium M 1.7GHzにメモリ1GBというのは、Windows XP時代なら必要十分だったのだが、最新OSには力不足なのだろうか。/usr/lib/nux/unity_support_test -pで確認すると、Unity 3Dもサポートしてない。

Unity 2Dは12.10で無くなってしまうそうなので、軽量デスクトップのLubuntuでも使ってみるかと、まずThinkPad X201のVMware Playerでいろいろと試してみた。LubuntuのDVDから導入するのが手っ取り早いが、それも芸がないので、まずUbuntu 11.10をインストールし、あとからLubuntuデスクトップをインストールすることにした。ところがいろいろとつまずいてしまった。ちなみに日本語環境は不要なので、Ubuntuは英語でインストールした。

プロキシサーバを通すためにNetwork→Network proxyでManualを選び、プロキシホスト名とポートを入力する。そしてApply system wideでシステム全体に適用する。これが/etc/apt/apt.confに書き込まれる。Ubuntuインストール直後にこのファイルは存在しない。

ソフトウェアソースはSystem Settings→Software Sourcesで設定する。インストール直後はServer for Japanになっていた。タイムゾーンをTokyoにしたからか?ここをいじる必要はないのだが、試行錯誤しているとき、Master serverならパッケージが見つかるが、Server for United Statesやfor Japanだと見つからないということもあった(原因不明)。ソースの設定は/etc/apt/sources.listに書き込まれる。

プロキシとソフトウェアソースの設定が終われば、「apt-get install lubuntu-desktop」でLubuntuデスクトップ環境(Lubunto Desktop environment)をインストールできる。その前に「apt-cache search lubuntu」でパッケージが検索できるかどうか確認しておくとよいだろう。私の環境では202パッケージ、362MBをダウンロードした。

UbuntuのWikiにはソフトウェアセンターからインストールできると書いてある。ところが検索窓に「lubuntu」と入力しても、何もヒットしない。散々悩んで、ようやく出てくるようになったのは、Update Managerを起動して12.04 LTSへのアップグレードを起動したあとだった。ダウンロード総容量(今回は957MB)や、削除されたり未サポートになるパッケージの情報が表示されて、本当にアップグレードするかどうか聞いてくる。ここでキャンセルする。するとUbuntuソフトウェアセンターでlubunto-desktopが見つかるようになった。何がおかしかったのかよく分からない。アップグレード処理の最初にrelease upgrade toolをダウンロードするが、これが関係しているのだろうか。

同じことをUbuntu 12.04 LTSをインストールしてやってみた。やはりDVDからのインストール直後はLubuntuパッケージが見つからない。Update Managerでアップデートの有無をチェックした後に、検索結果が表示されるようになった。とにかくソフトウェアソースにつなげて、最新パッケージ一覧を取得しなければ行けないようだ。

| | コメント (0)

英語配列キーボードでモードレス日本語入力

日本語配列キーボードを使っていたときは、変換キーでIMEオン、無変換キーでIMEオフになるようにして、日本語入力をモードレスで切り替えていた。現在のIME状態(モード)にかかわらず、日本語を入力したいときは変換キーを押せばいいし、IMEなしで入力したいときは無変換を押せばよい。それぞれのキーを何回押しても構わないところが味噌である。全角/半角キーのようにIMEオン/オフがトグル動作のものは、押しすぎると元のモードに戻ってしまうから、状態をいちいち目で確認しなければならない。

しかしキーボードを英語配列にしたため、無変換キーと変換キーが使えなくなってしまい、やむなくCtrl+スペースでトグル変換するようにした。ATOKはカーソル位置に入力モードを表示してくれるが、これはモードを切り替えたときだけなのが玉に瑕だ。アプリを起動した直後や、別のウインドウから切り替えたときは、言語バーを確認する必要がある。いちいち画面の右下を見るのは面倒で、打ち込み始めてからモードの違いに気付き、Ctrl+スペースでIMEをオン・オフにしていた。

先日、タッチタイピングはMacが優秀というTogetterまとめがTwitterに流れていた。よく読むと、スペースバー右隣のかなキーを押せば日本語入力がオンになり、左隣の無変換キーを押せばオフになる。私が以前やっていたのと同じ、モードレスな日本語入力切り替えが便利というのが主な内容だった。

これをきっかけに、英語配列でモードレス切替ができないかをもう一度考えてみた。ATOKは「日本語入力ON」と「日本語入力OFF」を個別に割り当てられるから、問題はどのキーを使うかということになる。他のショートカットと衝突しないように試行錯誤の末、Ctrl+スペースを「日本語入力ON」に、Ctrl+Shift+スペースを「日本語入力OFF」に割り当てた(注1)。これでモードレス切替ができる。Ctrl+;(セミコロン)であればホームポジションで押せるのだが、残念ながらATOKはこのキーがカスタマイズできない。

ただし、左小指を寝かせるようにしてCtrlとShiftを同時に押さえるのは、やってやれないことはないが、けっこう辛い。これをなんとかしようとAutoHotkeyの助けを借りることにした。「!^Space::Send ^+{Space}」というホットキー定義を追加し、Ctrl+Shift+スペースをCtrl+Alt+スペースに置き換えた。Ctrlを左小指、Altを左親指、スペースバーを右親指で押せる。Altキーはウインドウ切替でしょっちゅう押すから、位置を体が覚えている。左小指で2キー同時押しという苦行を強いることがなくなり、ずいぶん楽だ。Windowsキー付きのキーボードなら、Windows+スペースに割り当ててもいいかもしれない。

さらに左手だけでIMEオフにできるよう、Ctrl+Alt+AがCtrl+Shift+スペースを送出するように定義した。なぜこんなのが必要かというと、右手でマウスを操作しながら、左手でコマンドを入力するときに、意外とよく使っているのである。例えばOutlookのメール一覧を差出人でソートし、名前がTで始まる箇所に一気にジャンプするときに、もしIMEがオンになっていると、未確定文字ウインドウに入力文字がはいってしまう。それをキャンセルし、再度IMEオフでやり直すのに、いちいちマウスから手を離してCtrl+Shift+スペースというのは面倒だ。Ctrl+Alt+Aなら左手で操作できる。

現在のキーカスタマイズは以下の通り。

レジストリで設定
・左CtrlとCapsLockを入れ替え
・Escと半角/全角を入れ替え
・Enterを左Ctrlにも割り当て

AutoHotkeyで設定
・Alt+H/J/K/Lでvi風カーソル
・Ctrl+HでBackSpaceを送出
・Ctrl+Alt+スペースでCtrl+Shift+スペースを送出
・Ctrl+Alt+aでCtrl+Shift+スペースを送出

ATOKで設定(主なもの)
・Ctrl+スペースで日本語入力ON
・Ctrl+Shift+スペースで日本語入力OFF
・xキーで長音記号(ローマ字設定)
・Ctrl+Oで半角無変換(後)変換
・Ctrl+Q/Wで文節区切り縮小/伸張
・Ctrl+S/Dで文節前/後移動

(注1)
Ctrl+Shift+スペースはマイクロソフトWordやOutlookでノンブレークスペースのショートカットに割り当てられていて、日本語入力OFFとバッティングする。これを解決するには、リボンメニューの挿入→記号と特殊記号→その他の記号→特殊記号でショートカットを削除すればよい。

| | コメント (0)

« 2012年8月 | トップページ | 2012年10月 »