ホーム   »  スポンサー広告  »  スポンサーサイト   »  PSPプログラミング  »  第4弾 : ボタン入力

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

第4弾 : ボタン入力

さて、文字の表示が出来たので、次のステップに行きましょう。
ボタン入力です。

最終的には、入力されたボタンをファイルに記録するアプリにしたいと思いますw
いわゆるキーロガーてヤツです。
悪用厳禁w
さっそく、ソースコード見てみましょうか。
適当な場所にKeyLoggerというフォルダを作り、その中にmain.cというファイル名で以下のソースコードを手打ちして下さい。

#include <pspkernel.h>
#include <pspdebug.h>
#include <pspdisplay.h>
#include <pspctrl.h>

#define printf pspDebugScreenPrintf

PSP_MODULE_INFO( "KeyLogger", 0, 0, 1 );
PSP_MAIN_THREAD_ATTR( THREAD_ATTR_USER | THREAD_ATTR_VFPU );

int end_flag = 0;

int exit_callback( int arg1, int arg2, void *common )
{
end_flag = 1;
return 0;
}

int CallbackThread( SceSize args, void *argp )
{
int cbid = sceKernelCreateCallback( "Exit Callback", exit_callback, NULL );
sceKernelRegisterExitCallback( cbid );
sceKernelSleepThreadCB();
return 0;
}

int setupCallbacks( void )
{
int thid = sceKernelCreateThread( "update_thread", CallbackThread, 0x11, 0xFA0, 0, 0 );
if( thid >= 0 ) {
sceKernelStartThread( thid, 0, 0 );
}
return thid;
}

void ShowCtrlData( SceCtrlData *pad )
{
unsigned int keys[13] = {
PSP_CTRL_SELECT,
PSP_CTRL_START,
PSP_CTRL_UP,
PSP_CTRL_RIGHT,
PSP_CTRL_DOWN,
PSP_CTRL_LEFT,
PSP_CTRL_LTRIGGER,
PSP_CTRL_RTRIGGER,
PSP_CTRL_TRIANGLE,
PSP_CTRL_CIRCLE,
PSP_CTRL_CROSS,
PSP_CTRL_SQUARE,
PSP_CTRL_HOLD
};
char *msg[13] = {
"SELECT",
"START",
"UP",
"RIGHT",
"DOWN",
"LEFT",
"LTRIGGER",
"RTRIGGER",
"TRIANGLE",
"CIRCLE",
"CROSS",
"SQUARE",
"HOLD",
};

printf( "X = %03d Y = %03d\n", pad->Lx, pad->Ly );
if( pad->Buttons != 0 ) {
int n;
for( n = 0; n < 13; n++ ) {
if( pad->Buttons & keys[n] ) {
printf( "Pressed button is %s.\n", msg[n] );
}
}
}
}

int main( int argc, char *argv[] )
{
setupCallbacks();

SceCtrlData pad;
sceCtrlSetSamplingCycle( 0 );
sceCtrlSetSamplingMode( PSP_CTRL_MODE_ANALOG );

while( end_flag != 1 )
{
sceDisplayWaitVblank();
pspDebugScreenInit();
pspDebugScreenSetXY( 0, 1 );
printf( "Press any key...\n" );
sceCtrlReadBufferPositive( &pad, 1 );
ShowCtrlData( &pad );
}

sceKernelExitGame();
return 0;
}



そして、同フォルダに前回の Makefile をコピーしてきて、一部を変更します。
同時に !_mk.bat もコピーして下さい。

TARGET = KeyLogger
OBJS = main.o

INCDIR =
CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)

LIBDIR =
LDFLAGS =
LIBS =

EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = KeyLogger

PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak

太字の行が変更箇所になります。

では、!_mk.batを実行し、問題が無ければEBOOT.PBPが生成されます。
それを PSP/GAME/KeyLogger に転送して下さい。

XMBから実行してみましょう。

Press any key...と表示されるので、色々なボタンを押してみて下さい。
ただし、HOMEボタンや輝度・音量調節・ミュート・WLANスイッチは認識しない。
HOLDボタンは認識する筈です。
アナログスティックも動かしてみて下さい。

今回新たに出た関数は色付きの関数です。
次回説明するので、自分でどの様な動作をするのか、考えておいてください。
スポンサーサイト
Comment
Trackback
Trackback URL
Comment Form
管理者にだけ表示を許可する
Twitter...A

estuibal=Y.K < > Reload

検索フォーム
RSSリンクの表示
リンク
QRコード
QR
ブロとも申請フォーム
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。