英語キーボードにおけるかな入力
英語キーボードで仮名入力(かな入力)を行う場合、必要なキーがアサインされていない、ホームポジョンから遠いキーにアサインされており打ちにくい、という問題があります。
この問題はautohotkey(windows)、karabiner-elements(macOS)などのキーマップを行うツールにより簡単に解消できます。小稿ではwindows環境についてautohotkeyを用いた対処方法を示します。
あわせてwindows PCの英語キーボードと、macOSの英語キーボードでは、一部の仮名配列が異なるので、windows PCでmacOSの仮名配列を実現するための対処も行なっています。これは筆者がmacOSの仮名配列に慣れているためです。
仮名入力(かな入力)を行うためのキーマップ
英語キーボードで仮名入力を行う場合、例えば以下のキーマップが便利です。
control + j かな入力モードに移行
control + ; 英数入力モードに移行
shift + ' かな入力モード時に「ろ」を打鍵
shift + ; かな入力モード時に「へ」を打鍵
shift + l かな入力モード時に「ー」を打鍵
shift + k かな入力モード時に「゜」を打鍵
shift + j かな入力モード時に「゛」を打鍵
ここでは修飾キーshiftを用いることで、ホームポジションから遠く離れた場所に配列されていた文字を打ちやすいキーにマッピングしています。
入力モードの遷移には修飾キーcontrolを用いていますが、好みに応じてalt など他のキーを使えます。controlを修飾キーにする場合には、caps lockをcontrolキーに設定したほうが便利です。macOSはOSの機能によりcaps lockをcontrolに変えられます。windowsではKeyTweakが便利です。
autohotkeyのコード
上記のマッピングを行うAHKのスクリプトを以下に示します。具体的には、「ろ」「へ」「ー」「゜」「゛」のマッピング、入力モードを遷移するcontrol + j、control +; の設定、windows PCとmacOSの仮名配列の違いを吸収する設定を行います。
ここで入力モードの設定と検出に、IME.ahk を用いています。以下のスクリプトは、autohotkeyのversionは1.1、wiondows10とwindows11で動作しました。
#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%
#include IME.ahk
$^;::
IME_SET(0) ; IMEを英数モードにする
Return
$^j::
IME_SET(1) ; IMEをかなモードにする。
Return
#If IME_GET() ; IMEがかなモードのときに以下の置き換えを行う
$+':: ; 「ろ」を shift + ' にマップ
Send,``
Return
$+`;:: ; 「へ」を shift + ; にマップ
Send,=
Return
$+k:: ; 「゜」を shift + k にマップ
Send,]
Return
$+j:: ; 「゛」を shift + j にマップ
Send,[
Return
$+l:: ; 「ー」を shift + l にマップ
Send,_
Return
$]:: ; これ以後はmacOSの仮名配列に合わせるための設定
Send,\
Return
$=::
Send,]
Return
$+[::
Send,+]
Return
$+=::
Send,+[
Return
$\::=
#If
IME.ahk
IME.ahkは以下にあります。ダウンロードして、上記のスクリプトと同じディレクトリーにおきます。
https://w.atwiki.jp/eamat/pages/17.html
英語キーボードと日本語キーボードについて
日本語キーボードの欠点の一つは、英語キーボードよりもキー数が多く、打鍵機会の多いback spaceやreturnがホームポジションから遠いことです。
また日本語キーボードは以下の理由から日本語の入力に向いていません。日本語をローマ字入力するとき、カナ文字のために増えたキーは全くの無駄です。日本語を仮名入力するとき、仮名文字のために増設されたキーはホームポジョンから遠く、仮名入力が敬遠される理由になっています。右手の小指で遠く離れたキーを正確に打鍵することは難しいのです。日本語キーボードは、無理にキーを増やした結果、どんな用途にも使いにくいのです。
英語キーボードには以上の欠点がないため、英語の入力、ローマ字入力、仮名入力のいずれの場合においても、英語キーボードが合理的です。
日本語キーボードの唯一の利点かもしれないと思える点は、入力モード遷移のための独立したキーがあることです。しかしこれも上記のように control + j などにマップすればよいことです。左右のALTをそれぞれ入力モード遷移に使っている方もいます。
仮名入力とローマ字入力について
仮名入力はローマ字入力に比べて打鍵回数が半分程度になり合理的です。
仮名配列はよく設計されていて、ホームポジション付近のキーの打鍵機会が最も多いです。1段目(数字キー部分)の打鍵機会は少く、特に打鍵が最も困難な1段目の右端付近「ほ」のあたりには使用頻度が少ない文字がマップされています。
もし打鍵が困難な文字があれば、修飾キーを用いて好みの位置にマッピングすればよいのです。本稿ではもっとも打鍵しにくい「へ」「ろ」「ー」などの文字を打鍵しやすいキーにマッピングしています。
日本語キーボードも英語キーボードも、最も打ちにくい1段目や、2段目の右端にかぎって修飾キーを用いたマッピングを行うのはどういう理由でしょうか?打鍵しにくいキーに複雑な割り当てを行っているため仮名入力が敬遠されているのではないかと思います。
仮名配列
上記のAHKスクリプトによる文字配列を以下にしめします。
英数1段目 `1234567890-=
1段目 `ぬふあうえおやゆよわほ゜
shift+1段目 〜ぬふぁぅぇぉゃゅょをほ「
英数2段目 qwertyuiop[]\
2段目 たていすかんなにらせ゛むへ
shift+2段目 たてぃすかんなにらせ」ーへ
英数3段目 asdfghjkl;'
3段目 ちとしはきくまのりれけ
shift+3段目 ちとしはき゛゜ーへろ
英数4段目 zxcvbnm,./
4段目 つさそひこみもねるめ
shift+4段目 っさそひこみも、。・
・・・・・・・・・・・・・・・・・・・・・・・・・
2022/1/28 構成と日本語表現を改めました。