nestopia/source/unix/input.h
2014-08-29 22:03:43 -04:00

123 lines
2.5 KiB
C++

#ifndef _INPUT_H_
#define _INPUT_H_
#define NUMGAMEPADS 2
#define NUMBUTTONS 10
#define TOTALBUTTONS (NUMGAMEPADS*NUMBUTTONS)
#define DEADZONE (32768/3)
#include <SDL.h>
#include "core/api/NstApiInput.hpp"
#include "core/api/NstApiVideo.hpp"
using namespace Nes::Api;
typedef struct {
SDL_Scancode u;
SDL_Scancode d;
SDL_Scancode l;
SDL_Scancode r;
SDL_Scancode select;
SDL_Scancode start;
SDL_Scancode a;
SDL_Scancode b;
SDL_Scancode ta;
SDL_Scancode tb;
SDL_Event ju;
SDL_Event jd;
SDL_Event jl;
SDL_Event jr;
SDL_Event jselect;
SDL_Event jstart;
SDL_Event ja;
SDL_Event jb;
SDL_Event jta;
SDL_Event jtb;
} gamepad_t;
typedef struct {
// Player 1
char *kb_p1u;
char *kb_p1d;
char *kb_p1l;
char *kb_p1r;
char *kb_p1select;
char *kb_p1start;
char *kb_p1a;
char *kb_p1b;
char *kb_p1ta;
char *kb_p1tb;
char *js_p1u;
char *js_p1d;
char *js_p1l;
char *js_p1r;
char *js_p1select;
char *js_p1start;
char *js_p1a;
char *js_p1b;
char *js_p1ta;
char *js_p1tb;
// Player 2
char *kb_p2u;
char *kb_p2d;
char *kb_p2l;
char *kb_p2r;
char *kb_p2select;
char *kb_p2start;
char *kb_p2a;
char *kb_p2b;
char *kb_p2ta;
char *kb_p2tb;
char *js_p2u;
char *js_p2d;
char *js_p2l;
char *js_p2r;
char *js_p2select;
char *js_p2start;
char *js_p2a;
char *js_p2b;
char *js_p2ta;
char *js_p2tb;
} inputsettings_t;
typedef struct {
unsigned char player;
unsigned char nescode;
unsigned char pressed;
unsigned char turboa;
unsigned char turbob;
} nesinput_t;
typedef struct {
int p1a;
int p1b;
int p2a;
int p2b;
} turbo_t;
void input_init();
void input_joysticks_detect();
void input_joysticks_close();
void input_process(Input::Controllers *controllers, SDL_Event event);
void input_pulse_turbo(Input::Controllers *controllers);
void input_inject(Input::Controllers *controllers, nesinput_t input);
void input_match_joystick(Input::Controllers *controllers, SDL_Event event);
void input_match_keyboard(Input::Controllers *controllers, SDL_Event event);
void input_match_mouse(Input::Controllers *controllers, SDL_Event event);
char* input_translate_event(SDL_Event event);
SDL_Event input_translate_string(char *string);
int input_checksign(int axisvalue);
void input_config_read_new();
void input_config_read();
void input_config_write();
void input_set_default();
static int input_config_match(void* user, const char* section, const char* name, const char* value);
int input_configure_item(int pnum, int bnum, int type);
void input_set_item(SDL_Event event, int type, int pnum, int counter);
#endif