Hironytic Status

ひろんの開発日誌

広告

※このエリアは、60日間投稿が無い場合に表示されます。記事を投稿すると、表示されなくなります。

[CoveredCalc] キーコードからキー名称取得

2008-01-29 23:31:51 | 構想
ここんとこほとんど開発がすすんでいませんが、とりあえずキーコードからのキー名称取得の調査段階にいます。
Windows 版の場合は次のようにしてやればいいかなーと考えています。
DWORD virtKey; // ここに仮想キーコードが入っている
TCHAR buf[128];
UINT scanCode = MapVirtualKey(virtKey, MAPVK_VK_TO_VSC);
if (0 != scanCode)
{
if (0 != GetKeyNameText(scanCode << 16, buf, sizeof(buf)))
{
// キー名が取得できた。buf が文字列。
return;
}
}

// それでもとれなければキーコードをそのまま表示することにする
// virtKey を "keycode-2f" みたいに
sprintf(buf, "keycode-%02x", virtKey);


BeOS 版の方は問題で、たぶん、キーコードからキー名称を取得するような API はないですね。
キーマッピングでマップされた文字をとったりすると小文字ばっかりとれてしまいそうだし、ファンクションキーとかテンキーとかは思ったようにとれないし。
ということで BeOS 版の方はキーコードとキー名称の対応表みたいなのを XML ファイルで持っておこうかなとか思ってます。これなら楽ちん。

Windows 版の方も同じ XML ファイルを持っておいてもいいですね。特に定義は追加しないで。デフォルトの表記じゃ区別できないキーボードとかそういうのを使ってる人がカスタマイズする最後の手段を残しておくという意味しかありませんが。

ということでまとめると

1. ソフトに添付した XML ファイルに定義があればそのキー名称を使う。
2. (Windowsの場合のみ) GetKeyNameText() API を使ってキー名称を取得。
3. それでもダメなら "keycode-xx"。

コメント   この記事についてブログを書く
« [PonpokoDiff] ベータ版公開 ... | トップ | [CoveredCalc] キーコードか... »
最新の画像もっと見る

コメントを投稿

構想」カテゴリの最新記事