Guest User

Untitled

a guest
Feb 28th, 2016
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.49 KB | None | 0 0
  1. diff --git a/Makefile.libretro b/Makefile.libretro
  2. index adabe31..97398b1 100644
  3. --- a/Makefile.libretro
  4. +++ b/Makefile.libretro
  5. @@ -162,6 +162,10 @@ else
  6. LDFLAGS += -shared -static-libgcc -static-libstdc++ -Wl,--version-script=libretro/link.T -lwinmm
  7. endif
  8.  
  9. +ifeq ($(KBDHACK), 1)
  10. +COMMONFLAGS += -DKBD_HACK=1
  11. +endif
  12. +
  13. ifeq ($(DEBUG), 1)
  14. COMMONFLAGS += -O0 -g
  15. else
  16. diff --git a/libretro/mapper.cpp b/libretro/mapper.cpp
  17. index 5f1858b..66b2077 100644
  18. --- a/libretro/mapper.cpp
  19. +++ b/libretro/mapper.cpp
  20. @@ -239,6 +239,8 @@ struct JoystickHat : public Processable
  21.  
  22. void keyboard_event(bool down, unsigned keycode, uint32_t character, uint16_t key_modifiers)
  23. {
  24. +
  25. +#ifndef KBD_HACK
  26. for (int i = 0; keyMap[i].retroID; i ++)
  27. {
  28. if (keyMap[i].retroID == keycode)
  29. @@ -248,6 +250,7 @@ void keyboard_event(bool down, unsigned keycode, uint32_t character, uint16_t ke
  30. return;
  31. }
  32. }
  33. +#endif
  34. }
  35.  
  36. struct EmulatedKeyPress : public Processable
  37. @@ -273,9 +276,213 @@ struct EmulatedKeyPress : public Processable
  38.  
  39. };
  40.  
  41. -void MAPPER_Init()
  42. +//BEGIN
  43. +#ifdef KBD_HACK
  44. +
  45. +#define input_state_cb input_cb
  46. +
  47. +static KBD_KEYS KeySym[512];
  48. +// FIXME: ADD OTHER MISSING KEYS AND HANDLE MODS
  49. +void retro_InitialiseKeyboardMapping()
  50. +{
  51. + int i;
  52. +
  53. + for (i=0; i<512; i++)
  54. + {
  55. + KeySym[i] = KBD_NONE;
  56. + }
  57. +
  58. + /* International key mappings */
  59. + KeySym[RETROK_0] = KBD_0;
  60. + KeySym[RETROK_1] = KBD_1;
  61. + KeySym[RETROK_2] = KBD_2;
  62. + KeySym[RETROK_3] = KBD_3;
  63. + KeySym[RETROK_4] = KBD_4;
  64. + KeySym[RETROK_5] = KBD_5;
  65. + KeySym[RETROK_6] = KBD_6;
  66. + KeySym[RETROK_7] = KBD_7;
  67. + KeySym[RETROK_8] = KBD_8;
  68. + KeySym[RETROK_9] = KBD_9;
  69. + KeySym[RETROK_a] = KBD_a;
  70. + KeySym[RETROK_b] = KBD_b;
  71. + KeySym[RETROK_c] = KBD_c;
  72. + KeySym[RETROK_d] = KBD_d;
  73. + KeySym[RETROK_e] = KBD_e;
  74. + KeySym[RETROK_f] = KBD_f;
  75. + KeySym[RETROK_g] = KBD_g;
  76. + KeySym[RETROK_h] = KBD_h;
  77. + KeySym[RETROK_i] = KBD_i;
  78. + KeySym[RETROK_j] = KBD_j;
  79. + KeySym[RETROK_k] = KBD_k;
  80. + KeySym[RETROK_l] = KBD_l;
  81. + KeySym[RETROK_m] = KBD_m;
  82. + KeySym[RETROK_n] = KBD_n;
  83. + KeySym[RETROK_o] = KBD_o;
  84. + KeySym[RETROK_p] = KBD_p;
  85. + KeySym[RETROK_q] = KBD_q;
  86. + KeySym[RETROK_r] = KBD_r;
  87. + KeySym[RETROK_s] = KBD_s;
  88. + KeySym[RETROK_t] = KBD_t;
  89. + KeySym[RETROK_u] = KBD_u;
  90. + KeySym[RETROK_v] = KBD_v;
  91. + KeySym[RETROK_w] = KBD_w;
  92. + KeySym[RETROK_x] = KBD_x;
  93. + KeySym[RETROK_y] = KBD_y;
  94. + KeySym[RETROK_z] = KBD_z;
  95. + KeySym[RETROK_SPACE] = KBD_space;
  96. + KeySym[RETROK_COMMA] = KBD_comma;
  97. + KeySym[RETROK_PERIOD] = KBD_period;
  98. + KeySym[RETROK_SEMICOLON] = KBD_semicolon;
  99. + KeySym[RETROK_MINUS] = KBD_minus;
  100. + KeySym[RETROK_EQUALS] = KBD_equals;
  101. + KeySym[RETROK_LEFTBRACKET] = KBD_leftbracket;
  102. + KeySym[RETROK_RIGHTBRACKET] =KBD_rightbracket;
  103. +
  104. + KeySym[RETROK_TAB] = KBD_tab;
  105. + KeySym[RETROK_RETURN] = KBD_enter;
  106. + KeySym[RETROK_BACKSPACE] = KBD_delete;
  107. + KeySym[RETROK_ESCAPE] = KBD_esc;
  108. +
  109. + //KeySym[RETROK_Equals & 0x0ff)] = KBD_CLR;
  110. +
  111. + KeySym[RETROK_UP] = KBD_up;
  112. + KeySym[RETROK_DOWN] = KBD_down;
  113. + KeySym[RETROK_LEFT] = KBD_left;
  114. + KeySym[RETROK_RIGHT] = KBD_right;
  115. + KeySym[RETROK_F12] = KBD_f12;
  116. + KeySym[RETROK_F11] = KBD_f11;
  117. + KeySym[RETROK_F10] = KBD_f10;
  118. + KeySym[RETROK_F1] = KBD_f1;
  119. + KeySym[RETROK_F2] = KBD_f2;
  120. + KeySym[RETROK_F3] = KBD_f3;
  121. + KeySym[RETROK_F4] = KBD_f4;
  122. + KeySym[RETROK_F5] = KBD_f5;
  123. + KeySym[RETROK_F6] = KBD_f6;
  124. + KeySym[RETROK_F7] = KBD_f7;
  125. + KeySym[RETROK_F8] = KBD_f8;
  126. + KeySym[RETROK_F9] = KBD_f9;
  127. +
  128. + KeySym[RETROK_KP_PERIOD] = KBD_kpperiod;
  129. +
  130. + KeySym[RETROK_LSHIFT] = KBD_leftshift;
  131. + KeySym[RETROK_RSHIFT] = KBD_rightshift;
  132. + KeySym[RETROK_LCTRL] = KBD_leftctrl;
  133. + KeySym[RETROK_RCTRL] = KBD_rightctrl;
  134. + KeySym[RETROK_CAPSLOCK] = KBD_capslock;
  135. +
  136. + KeySym[RETROK_KP_ENTER] = KBD_kpenter;
  137. +
  138. + KeySym[RETROK_DELETE] = KBD_delete;
  139. + KeySym[RETROK_END] = KBD_end;
  140. + KeySym[RETROK_PAGEDOWN] = KBD_pagedown;
  141. + KeySym[RETROK_INSERT] = KBD_insert;
  142. + KeySym[RETROK_HOME] = KBD_home;
  143. + KeySym[RETROK_PAGEUP] = KBD_pageup;
  144. +}
  145. +
  146. +//KEYBOARD
  147. +
  148. +//int KBMOD=-1,SHITFON=-1,CTRLON=-1;
  149. +
  150. +char Key_Sate[512];
  151. +char Key_Sate2[512];
  152. +static char old_Key_Sate[512];
  153. +
  154. +void retro_key_down(int key)
  155. {
  156. + KBD_KEYS code;
  157. +
  158. + if(key<512)
  159. + code=KeySym[key];
  160. + else code = KBD_NONE;
  161. +
  162. + KEYBOARD_AddKey(code,1);
  163.  
  164. +}
  165. +
  166. +void retro_key_up(int key)
  167. +{
  168. + KBD_KEYS code;
  169. +
  170. + if(key<512)
  171. + code=KeySym[key];
  172. + else code = KBD_NONE;
  173. +
  174. + KEYBOARD_AddKey(code,0);
  175. +
  176. +}
  177. +
  178. +void Process_key()
  179. +{
  180. + int i;
  181. +
  182. + for(i=0;i<320;i++)
  183. + Key_Sate[i]=input_state_cb(0, RETRO_DEVICE_KEYBOARD, 0,i) ? 0x80: 0;
  184. +
  185. + if(memcmp( Key_Sate,old_Key_Sate , sizeof(Key_Sate) ) )
  186. + for(i=0;i<320;i++)
  187. + if(Key_Sate[i] && Key_Sate[i]!=old_Key_Sate[i] )
  188. + {
  189. +/*
  190. +
  191. + if(i==RETROK_RCTRL){
  192. + //CTRLON=-CTRLON;
  193. + printf("Modifier crtl pressed %d \n",CTRLON);
  194. + continue;
  195. + }
  196. + if(i==RETROK_RSHIFT){
  197. + //SHITFON=-SHITFON;
  198. + printf("Modifier shift pressed %d \n",SHIFTON);
  199. + continue;
  200. + }
  201. +
  202. + if(i==RETROK_LALT){
  203. + //KBMOD=-KBMOD;
  204. + printf("Modifier alt pressed %d \n",KBMOD);
  205. + continue;
  206. + }
  207. +*/
  208. + //printf("press: %d \n",i);
  209. + retro_key_down(i);
  210. +
  211. + }
  212. + else if ( !Key_Sate[i] && Key_Sate[i]!=old_Key_Sate[i] )
  213. + {
  214. +/*
  215. +
  216. + if(i==RETROK_RCTRL){
  217. + CTRLON=-CTRLON;
  218. + printf("Modifier crtl released %d \n",CTRLON);
  219. + continue;
  220. + }
  221. + if(i==RETROK_RSHIFT){
  222. + SHIFTON=-SHIFTON;
  223. + printf("Modifier shift released %d \n",SHIFTON);
  224. + continue;
  225. + }
  226. +
  227. + if(i==RETROK_LALT){
  228. + KBMOD=-KBMOD;
  229. + printf("Modifier alt released %d \n",KBMOD);
  230. + continue;
  231. + }
  232. +*/
  233. + //printf("release: %d \n",i);
  234. + retro_key_up(i);
  235. +
  236. + }
  237. +
  238. + memcpy(old_Key_Sate,Key_Sate , sizeof(Key_Sate) );
  239. +
  240. +}
  241. +
  242. +#endif //END HACK RTYPE
  243. +
  244. +void MAPPER_Init()
  245. +{
  246. +#ifdef KBD_HACK
  247. +retro_InitialiseKeyboardMapping();
  248. +#endif
  249. struct retro_keyboard_callback callback = { keyboard_event };
  250. environ_cb(RETRO_ENVIRONMENT_SET_KEYBOARD_CALLBACK, &callback);
  251.  
  252. @@ -558,10 +765,15 @@ void MAPPER_AddHandler(MAPPER_Handler * handler,MapKeys key,Bitu mods,char const
  253. inputList.push_back(new EventHandler(handler, key, mods));
  254. }
  255.  
  256. +
  257. void MAPPER_Run(bool pressed)
  258. {
  259. poll_cb();
  260.  
  261. +#ifdef KBD_HACK
  262. +Process_key();
  263. +#endif
  264. +
  265. // Mouse movement
  266. int16_t mouseX = input_cb(1, RDEV(MOUSE), 0, RDID(MOUSE_X));
  267. int16_t mouseY = input_cb(1, RDEV(MOUSE), 0, RDID(MOUSE_Y));
Advertisement
Add Comment
Please, Sign In to add comment