このブログを検索

2020年12月1日火曜日

MSKLC 再び

 マイクロソフト社謹製の言語キーボード作成ソフトである MSKLC(Microsoft Keyboard Layout Creator) が再び マイクロソフトのダウンロードページからダウンロード可能になった。

MSKLCとは

社内ツールで、Windows10の多くの言語キーボードもこのソフトで作られているはずである。それが、去年までは無料で公開されていて、マイクロソフトのダウンロードページからダウンロード可能だったのだが、今年気付いた時には そのダウンロードページから消えていた。

このソフトはとても役に立つのに、それに代わるソフトの提供もなしに公式なマイクロソフトのサポートが無くなってしまうのは非常に残念だと思っていた。

しかし、今日確認したら復活していて、更に公式にWindows10に対応と書いてある。今までもWindows10で動いてはいたが公式にはWindows10に対応してなかった。

以前のMSKLCとどこか違いがあるのかどうか、新しくダウンロードして確認したがインストールする場所(C:\Program Files (x86)\Microsoft Keyboard Layout Creator 1.4)もプログラムのバージョン(1.4.6000.2)も全く同一だった。

Windows10対応

Windows10で動いていたとは言え、バージョン2004以前は AltGr + Shift + F が動作しないという不具合があった。この問題についてググるとSuperUserというサイトでこの問題の記載があった。

Spy++というソフトで解析して AltGr + Shift + F のキーシーケンスでは「Fのキーが押されたという情報がなくなる」のが原因との報告がある。その部分だけ引用させて頂く。

This problem is reported on several support forums for products that use this key combination. According to all reports this is a problem introduced by the update to Windows 10 version 1903, when this key is swallowed up by Windows without doing anything.

It may be undone in a future update, or Microsoft will complete adding the handling of this new hotkey, but in the meantime here is what I found.

Using Spy++ I saw this funny sequence of events being reported for pressing these keys:

Ctrl down
Shift down
Alt down
F up
Alt up
Ctrl up
Shift up

Meaning that the event for "F down" was swallowed up by some component of Windows. If these three modifier keys are pressed then the result is that the F-key event is totally nullified.


これはOS側の問題でMSKLC自体には何の問題もなかったのだが、そういう事情で今までWindows10対応とは言わなかったのかも知れない。しかし、この問題が Windows10 2004 updateで解決したし、公式にマイクロソフトのダウンロードページに載ったので安心して使えそうだ。

MSKLCの利用法

MSKLCは言語キーボードを自分で作ることが出来るツールである。以前の投稿Windowsの各国語キーボードの使い難さでも紹介したが、CapsLockはShiftキーを押さずとも大文字になるという定義以外に、通常はラテン文字、CapsLockを押すとキリル文字といった定義も出来る。

この機能にはSGCapsという名前が付けられている。(Swiss German Keyboard Layoutで最初にこの機能が用いられたので そのように名付けたとMSKLCのヘルプに載っている。)

私はこのSGCapsが気に入って、合計4種類の言語キーボードを作り、それぞれ LatinGrk、USCap、USRus、USHaw、と名付けた。名前の前半はCapsLockを押さない時の動作、後半はCapsLockを押した時の動作を示す。

USはUSキーボードと同じで、Latinは数字キーがデッドキーになっている以外はUSキーボードと同じになっている。Capは大文字、Rusはロシア語、Hawは発音記号、Grkは古典ギリシャ語の意味で名付けた。

USCapはAltGrを押しながら使うキーの定義があるのと、Shift+Spaceがデッドキーになっている点以外はUSキーボードと全く同じ動作をする。

デッドキーの連鎖

そして新たな機能「デッドキーの連鎖」を知った。これは公式には公開されていないが Michael S. Kaplan という人のブログに詳細が載っていて、特別な方法でデッドキーの次に押すキーもデッドキーに出来る。Kaplan さんは MSKLC の開発チームのメンバーだった人だ。

この機能を知ったので古典ギリシャ語のキーボードを作ることにした。現在マイクロソフトの提供する古典ギリシャ語のキーボードは使い難い事で定評がある。それは種々のアクセント記号の組合せでデットキーの数が文字の数(24)を上回る28種類(現代ギリシャ語用のデッドキーを除いて)もあるからだ。

しかし、デッドキーの組合せが使えれば必要なデッドキーは9種類まで減らせる。そして、デッドキーの割当についてそれなりの理由もひねり出せる。

詳細は今後 GitHub で公開する予定で、その時はこのブログでも紹介するつもりだ。

その他の使い方

MSKLCは、言語キーボードの開発以外にも文字コードが何かを調べるのに役立つ。MSKLCを立ち上げ、任意のキーをクリックすると文字コードの入力欄が現れる。そこに調べたい文字コードをコピペしてやると文字コードが何かを表示してくれる。




図では、アキュート・アクセントが付いた a の文字が2つ AltGr A のキーの所に入力されているが前方の文字は a と アキュート・アクセントが合成された文字であることが分かる。文字コード4つまで解析可能になっている。