今の仕事で、顧客指定のリモート接続アプリを使って Windows PC にアクセスし、日本語配列のキーボードからローマ字入力ではなく かな入力をすると、以下の問題が生じる。
- 「ろ」を押すと「ー」(長音記号) が打ち込まれる
- 「を」を押すと「わ」が打ち込まれる
1 点目の「ろ」については、右下の「ろ」のキー [⧵] を英数モードで押した場合のバックスラッシュ ⧵ と右上の「ー」のキー [¥] の円マーク ¥ が一緒くたに ¥ として扱われてる感じ。
回避方法は簡単で、[Shift] + [⧵] を押すことによって「ろ」が打ち込める。
イレギュラーな操作だが、打ち込めるだけマシ。
いっぽう 2 点目の「を」については、[0] を押しても [Shift] + [0] を押しても常に [Shift] が無視されて「わ」になってしまう。
どんな組合わせのキーを押しても「を」を打ち込むことができない。
この 2 点目の事象について、AutoHotkey スクリプトで対処することにした。
- 暫定版
Insert:: Send "+0"
- 完成版
isShiftDown := false
*~Shift::
{
global isShiftDown
isShiftDown := true
}
*~Shift Up:: SetTimer ClearShift, -20
ClearShift()
{
global isShiftDown
isShiftDown := false
}
$0:: Send isShiftDown ? "+0" : "0"
暫定版は超シンプルで、[Insert] を押すと実際には [Shift] + [0] の操作、すなわち「を」の入力が実現できる。
完成版は、リモート接続中のキー操作時のイベント解析結果をもとに作ったバージョン。
[Shift] を押したタイミングでリモート接続先には [Shift] key down が送られるが、その後 [Shift] を押したまま [0] を押すとリモート接続先には [Shift] key up と [0] key down が連続で送られる様子。
なので、[Shift] が離されたと判定してから一定時間内 (20ms 以内) に [0] が押された場合は [Shift] + [0] の操作に読み替えるスクリプトにしてみた。
[Shift] を押したまま [0] を連打すると 2 回目以降は「わ」が打ち込まれてしまうが、「を」を連打する機会はほぼないから構わないだろう。
リモート接続アプリ (海外製) を選定した人は、きっとローマ字入力を常用してて、かな入力の存在すら知らないんだろうなぁ。