2008年5月14日

前回: WPFでホットキーコントロールへの道2

 コントロールを作る場合、キーが入力されたときにキー名を表示してあげる必要があるけど、第1・2回からもわかるように単純にKey列挙体をToStringするだけではダメですよね。めんどいけどキーの値(数値、Key列挙体の値)とコントロールに表示する文字列のペアは全部コードで指定することにしようと思います。

 以上で数値と表示名が1対1で決まるかというと決まらないよね。日本語キーボードと英語キーボードでは同じ数値のキーでも入力される文字は変わってくると思う。たとえば、日本語キーボードの「@」キーを押したとき、PreviewKeyDownイベントで取れる値では Key.OemTilde となります。コントロールには「@」と表示されるのが期待される。たぶん英語キーボードだと「@」の位置はShift押しながら2なので、コントロールに「@」と表示する機会はないでしょう(英語キーボード持ってないのできちんと確認できない)。

日本語キーボードか否か

 そんなわけで、少なくとも日本語キーボードかそれ以外かは考慮しておきたい。キーボードの判別は.NETであるのかなー? Windows APIだとGetKeyboardTypeでできました。

<DllImport("user32")> _
Private Shared Function GetKeyboardType(ByVal nTypeFlag As Integer) As Integer
End Function

と宣言しておいて

If GetKeyboardType(0) = 7 Then
    Console.WriteLine("日本語キーボード")
End If

引数0のときの戻り値が7の場合、日本語キーボードです。

 今回はここまで。遠い道のりだなぁ。

posted @ 23:48 | Feedback (199)

 「使ってみよう! Windows Live SDK/API:第7回 Windows Live Writer ―― プラグインの作成 Part I」が公開されました(火曜に)。今回からWindows Live Writer関連です! 記事に書いたURLプラグイン、UTF-8オンリーだけど結構有用なんじゃないでしょうか。エンコード判別処理いれたらもっと有用なはず。ぜひ作ってみてください。自分でも作ろうかな……。

 

関連記事

posted @ 23:12 | Feedback (0)

スピーカ各位 殿(は不要、と φ(.. メモメモ

 作ってみたよ。約1分で地球が1回転。日本が60回回ってきたら、おおよそ1時間のはず! 持続的に滑らかに地球まわす方法ってあるのかなぁ。

Earth Timer

 IE7とFirefox用。Virtual Earth 3Dもインストールしてね。

posted @ 23:00 | Feedback (151)