[Win] キーボードから直接文字コードを指定して入力する方法

2017年11月30日

 Windows ではキーボードから直接、IME に頼らず文字コードを入力することができます。

 基本的な操作は、[ALT] キーを押し込んだままテンキーで文字コードを入力し [ALT] キーを離します。
 たとえばメモ帳で、[ALT] を押す → [3] → [3] → [4] → [4] → [0] → [ALT] を離す、とすると「あ」が入力できます。33440 は「あ」の Shift-JIS における文字コード (82A0h = 33440) です。

 さて問題はここからです。

 メモ帳ではなく Wordpad で「あ」を入力したいとします。
 ところがメモ帳と同じように、[ALT] を押す → [3] → [3] → [4] → [4] → [0] → [ALT] を離す、としても意図した文字は入力できません。「芠」と謎の文字が入力されます。
 そこで Wordpad の場合は、[ALT] を押す → [1] → [2] → [3] → [5] → [4] → [ALT] を離す、とします。すると「あ」が入力されます。なぜかというと、12354 というのは「あ」の Unicode における文字コード (U+3042 = 12354) だからです。

 つまりこの「[ALT] キーを押し込んだまま文字コードを入れる」という操作は、それを受け取るアプリケーションによって挙動が異なるということです(汗

 メモ帳や Excel は Shift-JIS 派、Microsoft Word, Wordpad, Outlook は Unicode 派です。Microsoft Edge に至っては、下位 8bit を Shift-JIS で評価します。 (つまり 177 も 433 も共に「ア」と評価されます)

 Microsoft Word と Wordpad は同じかと思えばそうでもなく、例えば 177 の場合、Microsoft Word では「ア」ですが、Wordpad (Windows 8 系以前) では「±」だったりします。Wordpad のほうがより Unicode に忠実ですね。Microsoft Word のほうは 8bit 領域は Shift-JIS で判断し、それ以上は Unicode で判断といった感じです。とはいえ、Windows 10 の Wordpad では Microsoft Word と同じく「ア」だったりします(汗

 また、Windows Form (VB や C#) の場合、TextBox コントロールは Shift-JIS 派、RichTextBox コントロールは Unicode 派です。つまりこの両方のコントロールを使用したアプリケーションが存在すると、同一アプリケーション内の入力の場所ごとに違う評価がされることになります。

 とにかく重要なことは、この IME を経由しない文字コード入力というのは、受け取るアプリケーションやコントロールによって挙動が異なる、ということです。

 なので例えば QR リーダーのようなデバイスで、キーボードエミュレーション (HID 接続) を行う場合、ASCII 領域以外の文字は何が入ってくるかわからないということです。従って、キーボードエミュレーションで ASCII 領域以外の文字を入力させたい場合、上記のような傾向はあるものの確実ではないので、アプリケーションごと、入力場所毎に意図した入力ができるかどうかを検証しておく必要があります。






カテゴリー: OS, Windows

Follow comments via the RSS Feed | Leave a comment | Trackback URL

コメントを投稿する

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


«   »
 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org