zoukankan      html  css  js  c++  java
  • PSP开发[C++]接收按键控制

    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); 来读取按键内容。

  • 相关阅读:
    了解jQuery Validate.JS后不用再为正则验证头疼
    Javascripty(数组字符串篇)
    Javascripty(中篇)
    javascript(入门篇)
    Git与Github(初基础)
    解释ajax的工作原理
    rem是什么
    图片懒加载
    Angular中使用Swiper不能滑动的解决方法
    关于Iscroll.js 的滑动和Angular.js路由冲突问题
  • 原文地址:https://www.cnblogs.com/icuit/p/1737633.html
Copyright © 2011-2022 走看看