Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/Makefile.libretro b/Makefile.libretro
- index adabe31..97398b1 100644
- --- a/Makefile.libretro
- +++ b/Makefile.libretro
- @@ -162,6 +162,10 @@ else
- LDFLAGS += -shared -static-libgcc -static-libstdc++ -Wl,--version-script=libretro/link.T -lwinmm
- endif
- +ifeq ($(KBDHACK), 1)
- +COMMONFLAGS += -DKBD_HACK=1
- +endif
- +
- ifeq ($(DEBUG), 1)
- COMMONFLAGS += -O0 -g
- else
- diff --git a/libretro/mapper.cpp b/libretro/mapper.cpp
- index 5f1858b..66b2077 100644
- --- a/libretro/mapper.cpp
- +++ b/libretro/mapper.cpp
- @@ -239,6 +239,8 @@ struct JoystickHat : public Processable
- void keyboard_event(bool down, unsigned keycode, uint32_t character, uint16_t key_modifiers)
- {
- +
- +#ifndef KBD_HACK
- for (int i = 0; keyMap[i].retroID; i ++)
- {
- if (keyMap[i].retroID == keycode)
- @@ -248,6 +250,7 @@ void keyboard_event(bool down, unsigned keycode, uint32_t character, uint16_t ke
- return;
- }
- }
- +#endif
- }
- struct EmulatedKeyPress : public Processable
- @@ -273,9 +276,213 @@ struct EmulatedKeyPress : public Processable
- };
- -void MAPPER_Init()
- +//BEGIN
- +#ifdef KBD_HACK
- +
- +#define input_state_cb input_cb
- +
- +static KBD_KEYS KeySym[512];
- +// FIXME: ADD OTHER MISSING KEYS AND HANDLE MODS
- +void retro_InitialiseKeyboardMapping()
- +{
- + int i;
- +
- + for (i=0; i<512; i++)
- + {
- + KeySym[i] = KBD_NONE;
- + }
- +
- + /* International key mappings */
- + KeySym[RETROK_0] = KBD_0;
- + KeySym[RETROK_1] = KBD_1;
- + KeySym[RETROK_2] = KBD_2;
- + KeySym[RETROK_3] = KBD_3;
- + KeySym[RETROK_4] = KBD_4;
- + KeySym[RETROK_5] = KBD_5;
- + KeySym[RETROK_6] = KBD_6;
- + KeySym[RETROK_7] = KBD_7;
- + KeySym[RETROK_8] = KBD_8;
- + KeySym[RETROK_9] = KBD_9;
- + KeySym[RETROK_a] = KBD_a;
- + KeySym[RETROK_b] = KBD_b;
- + KeySym[RETROK_c] = KBD_c;
- + KeySym[RETROK_d] = KBD_d;
- + KeySym[RETROK_e] = KBD_e;
- + KeySym[RETROK_f] = KBD_f;
- + KeySym[RETROK_g] = KBD_g;
- + KeySym[RETROK_h] = KBD_h;
- + KeySym[RETROK_i] = KBD_i;
- + KeySym[RETROK_j] = KBD_j;
- + KeySym[RETROK_k] = KBD_k;
- + KeySym[RETROK_l] = KBD_l;
- + KeySym[RETROK_m] = KBD_m;
- + KeySym[RETROK_n] = KBD_n;
- + KeySym[RETROK_o] = KBD_o;
- + KeySym[RETROK_p] = KBD_p;
- + KeySym[RETROK_q] = KBD_q;
- + KeySym[RETROK_r] = KBD_r;
- + KeySym[RETROK_s] = KBD_s;
- + KeySym[RETROK_t] = KBD_t;
- + KeySym[RETROK_u] = KBD_u;
- + KeySym[RETROK_v] = KBD_v;
- + KeySym[RETROK_w] = KBD_w;
- + KeySym[RETROK_x] = KBD_x;
- + KeySym[RETROK_y] = KBD_y;
- + KeySym[RETROK_z] = KBD_z;
- + KeySym[RETROK_SPACE] = KBD_space;
- + KeySym[RETROK_COMMA] = KBD_comma;
- + KeySym[RETROK_PERIOD] = KBD_period;
- + KeySym[RETROK_SEMICOLON] = KBD_semicolon;
- + KeySym[RETROK_MINUS] = KBD_minus;
- + KeySym[RETROK_EQUALS] = KBD_equals;
- + KeySym[RETROK_LEFTBRACKET] = KBD_leftbracket;
- + KeySym[RETROK_RIGHTBRACKET] =KBD_rightbracket;
- +
- + KeySym[RETROK_TAB] = KBD_tab;
- + KeySym[RETROK_RETURN] = KBD_enter;
- + KeySym[RETROK_BACKSPACE] = KBD_delete;
- + KeySym[RETROK_ESCAPE] = KBD_esc;
- +
- + //KeySym[RETROK_Equals & 0x0ff)] = KBD_CLR;
- +
- + KeySym[RETROK_UP] = KBD_up;
- + KeySym[RETROK_DOWN] = KBD_down;
- + KeySym[RETROK_LEFT] = KBD_left;
- + KeySym[RETROK_RIGHT] = KBD_right;
- + KeySym[RETROK_F12] = KBD_f12;
- + KeySym[RETROK_F11] = KBD_f11;
- + KeySym[RETROK_F10] = KBD_f10;
- + KeySym[RETROK_F1] = KBD_f1;
- + KeySym[RETROK_F2] = KBD_f2;
- + KeySym[RETROK_F3] = KBD_f3;
- + KeySym[RETROK_F4] = KBD_f4;
- + KeySym[RETROK_F5] = KBD_f5;
- + KeySym[RETROK_F6] = KBD_f6;
- + KeySym[RETROK_F7] = KBD_f7;
- + KeySym[RETROK_F8] = KBD_f8;
- + KeySym[RETROK_F9] = KBD_f9;
- +
- + KeySym[RETROK_KP_PERIOD] = KBD_kpperiod;
- +
- + KeySym[RETROK_LSHIFT] = KBD_leftshift;
- + KeySym[RETROK_RSHIFT] = KBD_rightshift;
- + KeySym[RETROK_LCTRL] = KBD_leftctrl;
- + KeySym[RETROK_RCTRL] = KBD_rightctrl;
- + KeySym[RETROK_CAPSLOCK] = KBD_capslock;
- +
- + KeySym[RETROK_KP_ENTER] = KBD_kpenter;
- +
- + KeySym[RETROK_DELETE] = KBD_delete;
- + KeySym[RETROK_END] = KBD_end;
- + KeySym[RETROK_PAGEDOWN] = KBD_pagedown;
- + KeySym[RETROK_INSERT] = KBD_insert;
- + KeySym[RETROK_HOME] = KBD_home;
- + KeySym[RETROK_PAGEUP] = KBD_pageup;
- +}
- +
- +//KEYBOARD
- +
- +//int KBMOD=-1,SHITFON=-1,CTRLON=-1;
- +
- +char Key_Sate[512];
- +char Key_Sate2[512];
- +static char old_Key_Sate[512];
- +
- +void retro_key_down(int key)
- {
- + KBD_KEYS code;
- +
- + if(key<512)
- + code=KeySym[key];
- + else code = KBD_NONE;
- +
- + KEYBOARD_AddKey(code,1);
- +}
- +
- +void retro_key_up(int key)
- +{
- + KBD_KEYS code;
- +
- + if(key<512)
- + code=KeySym[key];
- + else code = KBD_NONE;
- +
- + KEYBOARD_AddKey(code,0);
- +
- +}
- +
- +void Process_key()
- +{
- + int i;
- +
- + for(i=0;i<320;i++)
- + Key_Sate[i]=input_state_cb(0, RETRO_DEVICE_KEYBOARD, 0,i) ? 0x80: 0;
- +
- + if(memcmp( Key_Sate,old_Key_Sate , sizeof(Key_Sate) ) )
- + for(i=0;i<320;i++)
- + if(Key_Sate[i] && Key_Sate[i]!=old_Key_Sate[i] )
- + {
- +/*
- +
- + if(i==RETROK_RCTRL){
- + //CTRLON=-CTRLON;
- + printf("Modifier crtl pressed %d \n",CTRLON);
- + continue;
- + }
- + if(i==RETROK_RSHIFT){
- + //SHITFON=-SHITFON;
- + printf("Modifier shift pressed %d \n",SHIFTON);
- + continue;
- + }
- +
- + if(i==RETROK_LALT){
- + //KBMOD=-KBMOD;
- + printf("Modifier alt pressed %d \n",KBMOD);
- + continue;
- + }
- +*/
- + //printf("press: %d \n",i);
- + retro_key_down(i);
- +
- + }
- + else if ( !Key_Sate[i] && Key_Sate[i]!=old_Key_Sate[i] )
- + {
- +/*
- +
- + if(i==RETROK_RCTRL){
- + CTRLON=-CTRLON;
- + printf("Modifier crtl released %d \n",CTRLON);
- + continue;
- + }
- + if(i==RETROK_RSHIFT){
- + SHIFTON=-SHIFTON;
- + printf("Modifier shift released %d \n",SHIFTON);
- + continue;
- + }
- +
- + if(i==RETROK_LALT){
- + KBMOD=-KBMOD;
- + printf("Modifier alt released %d \n",KBMOD);
- + continue;
- + }
- +*/
- + //printf("release: %d \n",i);
- + retro_key_up(i);
- +
- + }
- +
- + memcpy(old_Key_Sate,Key_Sate , sizeof(Key_Sate) );
- +
- +}
- +
- +#endif //END HACK RTYPE
- +
- +void MAPPER_Init()
- +{
- +#ifdef KBD_HACK
- +retro_InitialiseKeyboardMapping();
- +#endif
- struct retro_keyboard_callback callback = { keyboard_event };
- environ_cb(RETRO_ENVIRONMENT_SET_KEYBOARD_CALLBACK, &callback);
- @@ -558,10 +765,15 @@ void MAPPER_AddHandler(MAPPER_Handler * handler,MapKeys key,Bitu mods,char const
- inputList.push_back(new EventHandler(handler, key, mods));
- }
- +
- void MAPPER_Run(bool pressed)
- {
- poll_cb();
- +#ifdef KBD_HACK
- +Process_key();
- +#endif
- +
- // Mouse movement
- int16_t mouseX = input_cb(1, RDEV(MOUSE), 0, RDID(MOUSE_X));
- int16_t mouseY = input_cb(1, RDEV(MOUSE), 0, RDID(MOUSE_Y));
Advertisement
Add Comment
Please, Sign In to add comment