←3DSのHBL用アプリ開発 トップへ

3DSのボタン操作を取得する

ボタンが押下されたかどうかなどを取得します。

最終更新:2017/06/13




はじめに


3DSにはゲームなどで操作する事に使用される、A/B/X/Y/L/R/ZR/ZL/START/SELECT/十字キー(D-pad)/スライドパッド(C-pad)/Cスティック(C-stick)があります。
ゲームやツールを操作する上ではとても便利な機能です。これをこの回で使いこなせるようにします。


キーの取得方法


hidScanInput関数で、全てのキーの状態を読み取る必要があります。
その関数を実行した後、hidKeysDown関数hidKeysUp関数hidKeysHeld関数でそれぞれ、押した、放した、(押下を)保持している状態の各ボタンのビットフラグがORされた値を取得できます。

各キーの値の一覧でキーの値の定義を確認してください。


サンプル


押したキーの内容を文字列で出力するサンプルです。
STARTボタンで終了できるようにしました。

#include <3ds.h>
#include <stdio.h>

int main(int argc, char **argv) {
    gfxInitDefault();
    consoleInit(GFX_TOP, NULL);
    const char KeysNames[32][16] = {//キーの名前を定義
        "A", "B", "SELECT", "START",
        "D-pad Right", "D-pad Left", "D-pad Up", "D-pad Down",
        "R", "L", "X", "Y", "", "",
        "ZL", "ZR", "", "", "", "", "Touch", "", "", "",
        "C-stick Right", "C-stick Left", "C-stick Up", "C-stick Down",
        "C-pad Right", "C-pad Left", "C-pad Up", "C-pad Down"
    };
    printf ("Press any key.\n");
    while (aptMainLoop()) {
        hidScanInput();//キーを読み取る
        unsigned int key = hidKeysDown();//押したキーを取得
        for (unsigned char i = 0; i < 32; i++)
            if (key==BIT(i)) printf ("Key Code=0x%08X / Key Name=%s\n", key, KeysNames[i]);//結果出力
        
        if (key & KEY_START) break;//STARTで終了
        gfxFlushBuffers();
        gfxSwapBuffers();
        gspWaitForVBlank();
        };
    gfxExit();
    return 0;
};
実行結果↓
Sample1



[前へ] [次へ]

(C)2017 InoueSoftware / 無断転載禁止