本文共 3908 字,大约阅读时间需要 13 分钟。
padctrl.cpp
#include < pspkernel.h > #include < pspdebug.h > #include < pspdisplay.h > #include < pspctrl.h > #include < iostream > PSP_MODULE_INFO( " Hello World " , 0 , 1 , 1 ); #define printf pspDebugScreenPrintf using namespace std; /* Exit callback */ int exit_callback( int arg1, int arg2, void * common) { sceKernelExitGame(); return 0 ; } /* Callback thread */ int CallbackThread(SceSize args, void * argp) { int cbid; // Create callback cbid = sceKernelCreateCallback( " Exit Callback " , exit_callback, NULL); sceKernelRegisterExitCallback(cbid); // Sleep thread but service any callbacks as necessary. sceKernelSleepThreadCB(); return 0 ; } /* Sets up the callback thread and returns its thread id */ int SetupCallbacks() { int thid = 0 ; // Create a thread. thid = sceKernelCreateThread( " update_thread " , CallbackThread, 0x11 , 0xFA0 , 0 , 0 ); if (thid >= 0 ) { // Start a created thread. sceKernelStartThread(thid, 0 , 0 ); } return thid; } int main( int argc, char ** argv) { // Initialise the debug screen. pspDebugScreenInit(); // setup callback; SetupCallbacks(); // 按键struct SceCtrlData pad; printf( " Press [X] To Start the Timer " ); while ( 1 ) { // Read buffer positive. sceCtrlReadBufferPositive( & pad, 1 ); if (pad.Buttons & PSP_CTRL_CROSS) { printf( " you pressed X " ); break ; } // 清屏 pspDebugScreenClear(); } // Sleep thread sceKernelSleepThread(); return 0 ; }
makefile
TARGET = padctrl OBJS = padctrl.o BUILD_PRX = 1 PSP_FW_VERSION = 371 # C编译器参数 CFLAGS = -O2 -G0 -Wall # C++编译器参数 CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti # 汇编编译器参数 ASFLAGS = $(CFLAGS) # 引用的库 -l stdC++ LIBS = -lstdc++ EXTRA_TARGETS = EBOOT.PBP PSP_EBOOT_TITLE = pad control PSPSDK = $(shell psp-config --pspsdk-path) include $(PSPSDK)/lib/build.mak
按键的枚举
PSP_CTRL_SELECT | Select button. |
PSP_CTRL_START | Start button. |
PSP_CTRL_UP | Up D-Pad button. |
PSP_CTRL_RIGHT | Right D-Pad button. |
PSP_CTRL_DOWN | Down D-Pad button. |
PSP_CTRL_LEFT | Left D-Pad button. |
PSP_CTRL_LTRIGGER | Left trigger. |
PSP_CTRL_RTRIGGER | Right trigger. |
PSP_CTRL_TRIANGLE | Triangle button. |
PSP_CTRL_CIRCLE | Circle button. |
PSP_CTRL_CROSS | Cross button. |
PSP_CTRL_SQUARE | Square button. |
PSP_CTRL_HOME | Home button. |
PSP_CTRL_HOLD | Hold button. |
PSP_CTRL_NOTE | Music Note button. |
接收按键需要一个while(1)来接受系统事件。
然后通过sceCtrlReadBufferPositive(&pad, 1); 来读取按键内容。转载地址:http://falgb.baihongyu.com/