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

  • 相关阅读:
    Activiti 整合的小插曲
    IDEA 提示找不到 javax 等 tomcat 的相关包
    一些好用的 Oracle 批处理和语句
    Oracle 日志报错导致的 “没有登录” 问题
    WebPack 从安装到闲置
    CHENEY-YANG'S BLOG(cheney-yang)
    Java基础知识常识总结
    激活Navicat
    IDEA文件头版权模板
    关于Spring框架中StringUtils常用/易误用方法解析
  • 原文地址:https://www.cnblogs.com/icuit/p/1737633.html
Copyright © 2011-2022 走看看