Z-Pocket Game Pro(ZPG Pro)
read joystick
main.c
#include <stdio.h> #include <stdlib.h> #include <SDL.h> int main(int argc, char **argv) { SDL_Event e; SDL_Joystick *joy=NULL; SDL_Init(SDL_INIT_JOYSTICK); joy = SDL_JoystickOpen(0); int stop=0; while(stop == 0) { if(SDL_PollEvent(&e)){ switch(e.type){ case SDL_JOYBUTTONUP: printf("up %d\n", e.jbutton.button); break; case SDL_JOYBUTTONDOWN: printf("down %d\n", e.jbutton.button); if(e.jbutton.button == 14){ stop = 1; } break; case SDL_JOYAXISMOTION: // up-left // (SDL_JoystickGetAxis(joy, 1) < -16384) && (SDL_JoystickGetAxis(joy, 0) < -16384); // down-left // (SDL_JoystickGetAxis(joy, 1) > 16384) && (SDL_JoystickGetAxis(joy, 0) < -16384); // down-right // (SDL_JoystickGetAxis(joy, 1) > 16384) && (SDL_JoystickGetAxis(joy, 0) > 16384); // up-right // (SDL_JoystickGetAxis(joy, 1) < -16384) && (SDL_JoystickGetAxis(joy, 0) > 16384); // up // vax = SDL_JoystickGetAxis(joy, 0); // (SDL_JoystickGetAxis(joy, 1) < -16384) && (ABS(vax) < 16384); // down // vax = SDL_JoystickGetAxis(joy, 0); // (SDL_JoystickGetAxis(joy, 1) > 16384) && (ABS(vax) < 16384); // left // vax = SDL_JoystickGetAxis(joy, 1); // (SDL_JoystickGetAxis(joy, 0) < -16384) && (ABS(vax) < 16384); // right // vax = SDL_JoystickGetAxis(joy, 1); // (SDL_JoystickGetAxis(joy, 0) > 16384) && (ABS(vax) < 16384); break; } } } SDL_JoystickClose(joy); SDL_Quit(); return 0; }
編譯
$ cd $ wget https://github.com/steward-fu/zpg-pro/releases/download/v1.0/toolchain-x64.tar.gz $ tar xvf toolchain-x64.tar.gz $ sudo mv gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu /opt/zpg-sdk $ export PATH=$PATH:/opt/zpg-sdk/bin $ aarch64-none-linux-gnu-gcc main.c -o main -lSDL2 -lSDL2_image -I/opt/zpg-sdk/aarch64-none-linux-gnu/include/SDL2 -Wl,-rpath-link=/opt/zpg-sdk/aarch64-none-linux-gnu/lib/pulseaudio -Wl,-rpath-link=/opt/zpg-sdk/aarch64-none-linux-gnu/lib