[GameMaker: Studio] keyboard_set_mapでキーカスタマイズ

今回もまたキーボードについて書いてみます。

keyboard_set_map命令を使用すると、任意のキーを別のキーに見せかける(マッピングする)ことができます。
これによって異なるキーで同一の処理を行うことができるようになります。

使い方は簡単で、keyboard_set_map(押されるキー , ゲームに認識させるキー)です。

■例
・カーソル上下左右の機能をテンキー8546でも使えるようにする。

keyboard_set_map(vk_numpad8, vk_up);
keyboard_set_map(vk_numpad5, vk_down);
keyboard_set_map(vk_numpad4, vk_left);
keyboard_set_map(vk_numpad6, vk_right);

これでテンキーの8を押してもキーコードはvk_upと同じ値になるので、keyboard_check(vk_up)だけでカーソル上とテンキー8の両方に対応できます。

次のように書くことで、それぞれのキーを入れ替えることもできます。
この場合はページアップとページダウンが逆になります。
keyboard_set_map(vk_pageup, vk_pagedown);
keyboard_set_map(vk_pagedown, vk_pageup);

割り当て先のキーコードはvk_***ord(“*”)以外に数値で直接指定することもでき、最大値は255までです。
一般的な日本語109キーボードでは240までしか使用していないようですが、マルチメディアキーボード等で241以降を使用していることもあるため、空き番号へのマッピングは避けた方が無難です。

一つ注意ですが、keyboard_check系命令やkeyboard_lastkeyはマッピングが反映されますが、keyboard_lastcharkeyboard_stringには反映されません。

たとえばkeyboard_set_map(ord(“Q”), ord(“W”))とした場合、QキーもWキーもkeyboard_lastkeyは87(Wのキーコード)が入りますが、keyboard_lastcharはQキーは“q”のままとなります。