US配列での日本語入力がAutoHotkeyだけで完結

この記事は約7分で読めます。

メカニカル,しかもUS(ANSI)配列のキーボードを始めて購入した事がきっかけで,いろいろと挑戦してきたわけですが,いよいよ AutoHotkey に手を出すことにしました.

AutoHotkey について

今回のキーボードに関する投稿を始めるまでは知らなかったのですが,Windows のショートカットキーのカスタマイズ用に開発されたスクリプト言語に AutoHotkey と言うのがあるんだそうです.

ショートカットキーのことを Hotkey と呼ぶらしく,AutoHotkey そのものは Hotkey 以外に Windows 環境のコンピュータを制御できるほどに開発が進んでいるそうです.

バージョンの違い

AutoHotkey の最新版は ver2 に移行しており,プログラミングとしてはより厳密に構文解釈するようになったとの事.その結果,結構曖昧な構文でも許された ver1 とはかなり仕様が異なっていて,ver1 で作られたスクリプトの殆どは ver2 では実行できなくなりました.

あれもこれもできるようになった AutoHotekey の目指す方向から言うと,この事自体は正しい動きなのだそうですが,ちょこっとキーボードのキーをリマップするだけに ver2 を使うには厳格すぎて敷居が高すぎます.

ですから,キーボードのリマップに利用されるバージョンは未だに ver1 系が殆どですので,私もそれに倣いました.

本来の目的である Hotkey の制御を行うためだけのスクリプトを学べば十分ですので,意外に敷居は低い様に思います.

スクリプト形式のままでは,実行環境となる AutoHotkey のインストールが必要ですが,専用のコンパイラで実行形式に変換すれば,使用する側のコンピューターに AutoHotkey の環境は必然ではありません.スタンドアローンで実行可能です.

AutoHotkey のインストール

とは言え,AutoHotkey は非常に有用な実行環境ですので,簡単にインストールの方法を載せておきます.

前項でも,使用するバージョンは ver1 だと書きましたが,コンパイル作業などが GUI で行える等のメリットを考えると ver2 をインストールしておいた方がベターだと思います.

後で説明しますが,ver1 の環境も別途インストールすることが出来ますので安心してください.

AutoHokey の本家サイト

に行き,Download から Download v2.0 をクリックし,セットアップファイルを適当な場所(ダウンロード等)に保存して下さい.

2016年初での最新安定バージョンは2015/01/25付の [AutoHotkey_2.0.19_setup.exe] になります.ダブルクリックしてセットアップを続けると,

の画面が表示されて,インストールが完了します.

今後はこの AutoHotkey Dash が GUI メニューになりますが,コンパイル時以外起動することはないでしょう.

ver 1.1 のインストール

AutoHotkey ver2 (今後は ver2.0)の環境下で,ver1 (今後は ver1.1)の環境でのみ起動可能なスクリプトを実行しようとすると,AutoHotkey 側で以下の画面を表示し,ver1.1 のインストールを促します.

[はい] を選択して進めることで,最新の ver1.1 が追加でインストールされ,ver2.0 環境でも ver1.1 環境のスクリプトを実行することが可能となります.

US配列のキーボードに変換/無変換キーを実装

それでは早速,US配列のキーボードで最初につまづく問題である変換キーと無変換キー(実際は [Shift]+[変換]キー)を AutoHotkey で実装してみましょう.

なお,Windows側のキーボードレイアウトは 101/102 に設定してある想定ですが,106/109 に設定している場合は,この後に投稿する「JIS配列のままでUS配列キーボードを使う」で使用するAutoHotkey のスクリプト(JIS2ANSI.ahk)が必要になります.

US配列のキーボードで日本語入力を行う場合,Alt + `~ キーでIMEのON/OFFを切り換える仕様になっていますが,ATOKしか使わない者にとってはかなり不便です.

60%サイズのUS配列キーボードでは,`~ キーの位置が Esc キーに置き換わることが多く,ますます日本語モードON/OFFがし辛くなってしまうのも悩むところです.

karakaram 氏の alt-ime-ahk が有名ですが,私が期待するIME仕様(ATOK)ではないので,もっと簡単(いや簡素)なスクリプトを一から書いてみました.

HENKAN.ahk

#Requires AutoHotkey v1.1
#SingleInstance force

RAlt::
	KeyWait, RAlt, T0.18
	if ErrorLevel {
		Send {RAlt down}
		KeyWait, RAlt
		Send {RAlt up}
	} else {
		Send {vk1Csc079}   ; 変換
	}
return

LAlt::
	KeyWait, LAlt, T0.18
	if ErrorLevel {
		Send {LAlt down}
		KeyWait, LAlt
		Send {LAlt up}
	} else {
		Send {Shift down}{vk1Csc079}{Shift up}	; Shift+変換
	}
return

スクリプトファイルもしくは以下に添付の実行形式ファイルをダブルクリックすればタスクトレイに常駐し,使用可能となります.通常は【小さいタスクバーボタン [^] 】に隠れているので,タスクバーの設定等でタスクバーに移動して下さい.

スクリプトの説明

#Requires AutoHotkey v1.1

AutoHotkey ver2.0 の環境で,ver1.1のスクリプトを実行しようとする場合は明示的にこの一文を最初に書いておきます.ver1.1 を追加インストールしているので問題は無いはずですが,念のために明示しておくと良いでしょう.

#SingleInstance force

既に実行されているスクリプトを二重で起動することを禁止します.

実際には,起動中のスクリプトを終了させてから次のスクリプトを起動させる様です.

RAlt::

右側のAltキーをHotkeyとして以下の様に定義しますという宣言です.

RAltキーの短押し(タップ,空打ち?)で日本語モードに入り全角モードに,もう一度タップすると半角モードになります.これは IME が ATOK の時の仕様ですが,MS-IME でも有効です.

vk1Csc079 ?

  • vk:Vitual Key   OS 側で定義されている仮想キー(コード)
  • sc:Scan Code   キーボード側からパソコン側に送出されるコード

どちらも,AutoHotkey でキーボードからの入力を制御する場合に,特殊なキーについてこれらのコードを指定する必要があります.【変換】キーもその一つになります.

Send {vk1C} もしくは Send {sc079} と,片方のコードだけを指定してもいいのですが,vk はあくまでも OS レベルで解釈されるコードで,パソコンの起動時から有効にするには sc で無ければならず,より確実な指定方法として二重に連ねるのがいいようです.

トグルスイッチですので日本語モードOFFにはなりませんが,実用上は問題ないと思います.

RAltをやや長押しすれば,通常のAltキーとして有効なままです.タップタイムは 180ms に設定していますが,何れは調整可能な仕様にバージョンアップするつもりです.

LAlt::

左側のAltキーをHotkeyとして以下の様に定義しますという宣言です.

日本語入力中にLAltキーの短押し(タップ,空打ち?)をすれば入力前のアルファベットに戻り,確定済の日本語の前にカーソルを置いてこのキーを押せば再変換してくれます.

これは ATOK での挙動になりますので,MS-IME で【無変換】として定義させたい場合は

Send {Shift down}{vk1Csc079}{Shift up}	; Shift+変換

の部分を

Send {vk1Dsc07B} ; 無変換

に置き換えてください.

LAltをやや長押しすれば,通常のAltキーとして有効なままです.


いかがでしたでしょうか?

たった22行のコードだけでUS配列のキーボードでも今まで通りの方法で日本語入力が可能となりました.


コメント