QUASI88 for IS01 その3

最後の仕上げです。使い易いようにキーボード入力の調整をします。

SDL_androidkeyboard.c

    if (scancode == SDL_SCANCODE_UNKNOWN) {
        __android_log_print(ANDROID_LOG_INFO, "SDL", "Unknown keycode %d", keycode);
	scancode = SDL_SCANCODE_SLASH;
    }

event.c

static	int	now_alt = 0;
/*----------------------------------------------------------------------
 * SDLK_xxx → KEY88_xxx 変換テーブル (デフォルト)
 *----------------------------------------------------------------------*/

static const int keysym2key88_default[ SDLK_LAST ] =
{
  0,				/*	SDLK_UNKNOWN		= 0,	*/
(省略)
//  KEY88_KP_MULTIPLY,		/*	SDLK_KP_MULTIPLY	= 268,	*/
  KEY88_STOP,		/*	SDLK_KP_MULTIPLY	= 268,	*/
(省略)
const T_REMAPPING remapping_x11_106[] =
{
#ifdef _IS01
  {	1,  SDLK_v,		KEY88_v,		},
  {	2,  1073741902,		KEY88_F6,		},	/* カタひら */
  {	2,  1073742049,		KEY88_SHIFTL,		},
  {	2,  1073741903,		KEY88_RIGHT,		},
  {	2,  1073741905,		KEY88_DOWN,		},
  {	2,  1073741904,		KEY88_LEFT,		},
  {	2,  1073741906,		KEY88_UP,		},
  {	2,  1073742053,		KEY88_F5,		},
  {	2,  1073741899,		KEY88_GRAPH,		},
  {	2,  1073741942,		KEY88_SYS_MENU,		},
#else
  {	1,  SDLK_LSUPER,	KEY88_KANA,		},
  {	1,  SDLK_RALT,		KEY88_ZENKAKU,		},
/*{	1,  SDLK_RCTRL,		KEY88_UNDERSCORE,	},*/
  {	1,  SDLK_MENU,		KEY88_SYS_MENU, 	},
  {	2,  49,			KEY88_ZENKAKU,		},	/* 半角全角 */
  {	2,  133,		KEY88_YEN,		},	/* \ |      */
  {	2,  123,		KEY88_UNDERSCORE,	},	/* \ _ ロ   */
  {	2,  131,		KEY88_KETTEI,		},
  {	2,  129,		KEY88_HENKAN,		},
  {	2,  120,		KEY88_KANA,		},	/* カタひら */
#endif
  {	0,  0,			0,			},
};

(省略)

    case SDL_KEYDOWN:		/*------------------------------------------*/
    case SDL_KEYUP:

      keysym  = E.key.keysym.sym;
#ifdef _IS01
if (keysym==1073742094) keysym=SDLK_ESCAPE;
if (keysym==SDLK_LALT) now_alt++;
if (now_alt) {
  if (keysym==SDLK_0) keysym=SDLK_CARET;
  if (keysym==SDLK_q) keysym=SDLK_TAB;
  if (keysym==SDLK_p) keysym=SDLK_AT;
  if (keysym==SDLK_MINUS) keysym=SDLK_BACKSLASH;
  if (keysym==SDLK_l) keysym=SDLK_SEMICOLON;
  if (keysym==SDLK_SLASH) keysym=SDLK_COLON;
  if (keysym==SDLK_COMMA) keysym=SDLK_LEFTBRACKET;
  if (keysym==SDLK_PERIOD) keysym=SDLK_RIGHTBRACKET;
  if (now_alt > 3) now_alt=0;
}
#endif

アドベンチャーゲームをやるには、ローマ字入力の機能が素晴らしいと思いました。あとは移植性に優れていますね。