【AutoHotKey】常に数字を半角で入力するコード
この記事では、キーに別の機能を割り当てるソフト「AutoHotkey」で、日本語入力モードでも、常に数字を半角で入力する方法(コード)について書きます。
キーに別の機能を割り当てるソフトAutoHotkeyを使うことで、日本語入力モードでも、数字を常に半角で入力できます。
MicrosoftのIMEは、Google日本語入力と違って、致命的な欠点があります。数字を常に半角で入力できない点です。僕は、基本的に、全角入力の数字を使いません。全角じゃないと入力できないような入力フォームじゃない限りは、常に半角に変換しています。
そのため、数字入力→変換の作業が、手間に感じました。数字入力→自動で半角になっているのがベストです。
何か解決方法がないか、インターネットで調べてみると、上位記事は全て、IMEのプロパティ→詳細設定→数字→「常に半角に変換」にすると、常に半角になると書かれています。真っ赤な大嘘です。
正確には、嘘じゃないんですが、常に半角で入力できない時点で、嘘に等しいです。「常に半角に変換」オプションは、その名の通り、「変換キー」を押した時に、必ず半角にするという意味です。
つまり、数字を入力した時点では、全角のままで、変換キーを押して初めて半角になります。数字→変換キーを押さないといけないので手間です。
恐らく、「数字 常に半角」で検索している方は、この変換キーを押す手間を省きたいがために、ググっていると思います。それなのに、ありきたりなことしか書かれておらず、残念です。
「もはや、Microsoft IMEの限界なのか?やはり、Google日本語入力に頼るしかないのか…?」と思っていたところ、天才的なひらめきが僕に舞い降りたので、記事にして共有したいと思います。(天才的w)
Google日本語入力だと、常に半角で数字入力するように設定できます。ただし、Microsoft IMEと比べて、挙動や操作感が違うので、今更、半角数字のためだけに移行するのはめんどくさいです。
実際、僕は、Google日本語入力を触ってみたのですが、Microsoft IMEと挙動が違いすぎて、挫折しちゃいました。便利なのは間違いないんですけどね。
移行する時間・余裕がある方は、本記事の方法ではなく、素直にGoogle日本語入力に移行したほうが、機能面で見た時に良いかもしれません。
「今後もMicrosoft IMEを使いたいけど、どうしても数字を常に半角入力したい!」という方は、本記事の方法を試してみてください。いつでも元に戻せるので、気軽に試せます。
僕は、テンキーレスキーボード(右側に電卓数字みたいなキーがないキーボード)を利用しています。数字を入力する時は、ファンクションキー(F1とかF2とか)の下にある数字キーを使っています。同じように、テンキーがない方でも使えます。
そもそもテンキーがある場合は、そちらで入力したら自動的に半角になりますっけ?忘れました。
前提
AutoHotkeyと呼ばれるキーに別の機能を割り当てるWindowsソフトを利用します。今回の方法を使う場合、こちらのソフトは、必須となります。インストールしていない方は、インストールしましょう。
詳しいインストール方法、使い方については、以下の記事を参考にしてみてください。
AutoHotKeyを使って、数字を常に半角で入力する手順
ファイルの作成
AutoHotKeyをインストールできたら、エクスプローラーの好きな場所で右クリック→新規作成→AutoHotKey Scriptをクリックします。
ドキュメント内に「AHK」といった感じで、フォルダーを作成して、その中に作成するといいかなと思います。既に、AutoHotKeyのファイルを作成している方は、そちらのほうに追記で書き込んでいってもOKです。
好きな名前にします。「常に半角数字」みたいな感じでいいかなと思います。
右クリック→プログラムから開く→好きなテキストエディターを選択します。Windows標準ならメモ帳です。僕は、Microsoftの「Visual Studio Code」で開きます。
コードを書き込む
テキストエディターを開けたら、コードを書き込んでいきます。既にコードが数行書かれていますが、そのまま改行して、書き込んでいきます。削除しても問題はありません。
書き込むコードは、以下になります。ちょっと長いですが、丸々コピペしましょう。
;----------------------------
;数字を常に半角で入力
;----------------------------
;1
1::Send,{U+0031}
Return
;2
2::Send,{U+0032}
Return
;3
3::Send,{U+0033}
Return
;4
4::Send,{U+0034}
Return
;5
5::Send,{U+0035}
Return
;6
6::Send,{U+0036}
Return
;7
7::Send,{U+0037}
Return
;8
8::Send,{U+0038}
Return
;9
9::Send,{U+0039}
Return
;0
0::Send,{U+0030}
Return
;----------------------------
;数字を常に半角で入力終了
;----------------------------
書き込めたら、ファイルを上書き保存します。
コードは、ちょっと長いですが、書いている内容は、至ってシンプルです。それぞれの数字を入力した時に、その数字の半角版を出力するという意味になっています。
半角数字の文字コード(Unicode文字)を出力先に指定しているのがポイントです。1の場合は、「U+0031」、2の場合は、「U+0032」ですね。これで、必ず半角数字で入力できます。
ファイルの実行
作成したAutoHotKeyファイルをダブルクリック、または右クリック→「Run Script」をクリックして、実行します。
実行中は、タスクトレイにアイコンが表示されます。こちらのアイコンが表示されている間は、日本語入力モードでも、数字が常に半角になります。
実際に使ってみた動画を貼っておきます。日本語入力モードでも、数字が半角で入力されます。数字以外のキーは、これまで通りです。
終了したい場合は、タスクトレイのアイコンを右クリック→「Exit」をクリックします。
スタートアップの登録
Windows起動時に、自動で起動してほしい場合、作成したAutoHotKeyファイルを右クリック→ショートカットの作成をクリックします。
エクスプローラーのアドレスバーに以下のパスを貼り付けて、Enterを押します。
shell:startup
スタートアップフォルダーが開くので、先ほど作成したショートカットをドラッグ&ドロップで配置します。これで、Windows起動時に自動起動してくれます。常に半角数字の環境の完成です。
特定のアプリでは、全角入力したい場合
特定のアプリを除外したい場合は、「#IfWinNotActive」を使います。特定のアプリを除外するという意味です。僕は、1つではなく、複数のアプリを除外したかったので、さらに「GroupAdd」を使って、まとめています。
SetTitleMatchMode, 2
GroupAdd, hankaku, 新規投稿を追加
GroupAdd, hankaku, 投稿を編集
GroupAdd, hankaku, ahk_exe gimp-2.10.exe
Return
#IfWinNotActive, ahk_group hankaku
;1
1::Send,{U+0031}
Return
;2
2::Send,{U+0032}
Return
;3
3::Send,{U+0033}
Return
;4
4::Send,{U+0034}
Return
;5
5::Send,{U+0035}
Return
;6
6::Send,{U+0036}
Return
;7
7::Send,{U+0037}
Return
;8
8::Send,{U+0038}
Return
;9
9::Send,{U+0039}
Return
;0
0::Send,{U+0030}
Return
#IfWinNotActive
簡単な意味を書いておきます。
SetTitleMatchMode, 2 | ウィンドウタイトルのマッチ方法。1が前方一致(デフォルト)、2が中間一致、3が完全一致(参考リンク) |
GroupAdd, グループ名, 〇〇〇 | グループ化。グループ名には、好きな単語を指定してOK。僕の場合、半角入力を除外したいウィンドウをグループ化したので、分かりやすいように「hankaku」にした。「〇〇〇」の部分に、除外したいウィンドウのタイトルやクラス、実行ファイル名などを記述する。 |
IfWinNotActive, ahk_group hankaku | 「hankaku」という名前のグループ内に登録しているウィンドウがアクティブ(前面)になっている時、コードを発動しないという意味。 |
僕の場合、ブログを書いているWordPress上では、全角で入力したかったので、「#IfWinNotActive」に、「新規投稿を追加」や「投稿を編集」を登録しています。こちらの文字がウィンドウタイトルに含まれる場合、効果が無効になり、普通の全角数字になります。
また、GIMP(画像編集ソフト)で、キーボードショートカットを、数字キーに割り当てていて、半角で入力するようにしていたら、正常に動作しなかったので、発動しないようにしています。
複数のウィンドウではなく、1つのウィンドウだけで無効化したい場合は、「GroupAdd」を使わなくてOKです。普通に「#IfWinNotActive, ahk_exe chrome.exe」(Chromeを除外)とかでOKです。
逆に、特定のウィンドウがアクティブになっている時だけ発動させたい場合は、「#IfWinNotActive」ではなく、「#IfWinActive」を使います。
僕の場合、「GroupAdd」で、つまづきました。グループにしても、うまく発動しなかったり…。うまく発動してなかった時は、諦めて、長文になってしまいますが、1つずつ「#IfWinActive」で指定していました。
結局、「Return」を書いてなかったり、「,」の位置が違ったり、余計なコードを書いていたり…。最終的には、上記のコードでうまくいきました。良かったです。
本コードのポイント・注意点
【ポイント】変換キーはこれまで通り使える→全角変換可能
本コードは、半角で確定入力しているわけではありません。つまり、数字入力後→変換キーを押すことで、全角数字、あるいは「②」や「Ⅱ」といった別の表示形式に変換できます。
日本語入力モードで入力した文字の下には、下線が引かれています。「変換キーを押したら、別の書式に変換できるよ~」という目印です。
一方で、本コードを実行している時に入力した数字は、下線が引かれていません。しかし、ちゃんと変換キーを押せます。動画を貼っておきます。
【注意点】日本語と数字の組み合わせに注意
日本語と数字を一気に入力して、変換キーを押すと、数字の方が変換対象になって、日本語のほうが変換されません。ここが唯一の注意点・デメリットかなと思います。
例えば、通常の日本語入力で「かいしん3」と入力して、変換キーを押します。この場合、「改心3」と変換されます。
一方、AutoHotKeyで数字を半角入力にしていると、変換キーを押しても、「かいしん3」になり、最初の日本語が漢字に変換されません。
日本語と数字が分離されていて、変換範囲が異なっています。実際の挙動を確かめてみた動画を貼っておきます。
「2022年7月5日」といったように日付を一気に入力する場合もおかしな結果になります。僕の場合、「2022年月日57」になりました。なぜか数字と漢字が入れ替わっています。人によっては、結構なデメリットになると思われます。
対策は2つほど考えられます。好きな方を試してみましょう。僕は両方使っています。
- 日本語と数字を入力する際は、別々に変換確定する
- スクリプトファイルの一時停止キーを割り当てる
日本語と数字を入力する際は、別々に変換確定する
「改心3」と入力したい場合は、一度「かいしん」で変換→数字の「3」を入力する…といった感じで、別々に変換しましょう。日本語と数字を分離することで、思った通りの変換結果が得られます。
日付の場合も、「2022年7月5日」で一気に入力→変換するのではなく、「2022年」→変換、「7月」→変換、「5日」→変換といったように、分けて変換することで、正常に表示されます。
スクリプトファイルの一時停止キーを割り当てる
AutoHotKeyには、一時的にコードを停止する機能が備わっています。この機能を好きなキーに割り当てておきます。こうすることで、日本語と数字を入力する前に、キーを押して、スクリプトを一時停止することが可能です。
まぁ、わざわざキーを押して、スクリプトファイルのオンオフ切り替える必要があるので、少し手間です。
作成したAutoHotKeyファイルのどこかに、以下のコードを記述します。Pauseキーを押した時に、コードを一時停止するという意味です。
;Pauseキーでスクリプト一時停止(サスペンドモード)
Pause::Suspend
Return
下記画像の感じです。書き込めたら、上書き保存します。もしかすると、冒頭に書くことで、正常に半角コードが機能しなくなる場合があります。その場合は、先に半角コードを書いて、最後に付け足す感じで追記しましょう。
タスクトレイのAutoHotKeyファイルを右クリック→「Reload This Script」をクリックして、ファイルをリロードします。既に終了していた場合は、ファイルをダブルクリックで実行します。
これで、キーボード右上にあるPauseキーにスクリプトファイルのオンオフが割り当てられました。一時的に無効化したい場合は、Pauseキーを押します。
タスクトレイのアイコンが、になります。この間は、スクリプトファイルが無効化されて、従来通りの数字入力になります。再び有効化したい場合は、同じようにPauseキーを押します。
感想
以上、AutoHotkeyを使って、常に半角数字で入力する方法でした。
以前からAutoHotKeyは使っていたので、ちょっと考えたら分かることだったのに、全然思いつかずに、ただぼけーっと過ごしていました。
ちなみに、最初思いついた時は、以下のコードにしていました。このコードが数字の「1」の処理なので、残りの数字分も記述します。かなり長くて、無理やり感が否めないコードです。
1::
Send, 1
Send, {F10}
Send, {Enter}
Return
それに、Windowsのメモ帳上ではなぜか正常に動作せず、ヘッダーのメニューが展開されてしまうという結果に…。Altなんて押してないのに、押した時の挙動になるんですよねぇ。素人にはAutoHotKey難しい。
何はともあれ、Unicode文字で指定することで、正常に半角数字が出力されたので良かったです。これで、快適なMicrosoft IME生活を送れます。