diff --git a/include/input.h b/include/input.h index d7141e0..cd0cbee 100644 --- a/include/input.h +++ b/include/input.h @@ -140,7 +140,7 @@ extern bool keyboard_focus; void handle_window_events(void); void handle_events(void); bool key_is_down(enum sact_keycode code); -void key_clear_flag(void); +void key_clear_flag(bool no_ctrl); bool joy_key_is_down(uint8_t code); void joy_clear_flag(void); bool joy_get_stick_status(int controller, int type, float *deg, float *pow); diff --git a/include/sact.h b/include/sact.h index a157bbf..f372b4d 100644 --- a/include/sact.h +++ b/include/sact.h @@ -101,6 +101,7 @@ int sact_Joypad_IsKeyDown(int num, int key); bool sact_Joypad_GetAnalogStickStatus(int num, int type, float *degree, float *power); bool sact_Joypad_GetDigitalStickStatus(int num, int type, bool *left, bool *right, bool *up, bool *down); int sact_Key_ClearFlag(void); +void sact_Key_ClearFlagNoCtrl(void); int sact_Key_IsDown(int keycode); int sact_CG_IsExist(int cg_no); void sact_System_GetDate(int *year, int *month, int *mday, int *wday); diff --git a/src/hll/ChipmunkSpriteEngine.c b/src/hll/ChipmunkSpriteEngine.c index c04e979..1134c56 100644 --- a/src/hll/ChipmunkSpriteEngine.c +++ b/src/hll/ChipmunkSpriteEngine.c @@ -375,7 +375,7 @@ HLL_LIBRARY(ChipmunkSpriteEngine, HLL_EXPORT(SP_SetBrightness, ChipmunkSpriteEngine_SP_SetBrightness), HLL_EXPORT(SP_GetBrightness, ChipmunkSpriteEngine_SP_GetBrightness), HLL_TODO_EXPORT(SP_CreateCopy, SACTDX_SP_CreateCopy), - HLL_TODO_EXPORT(Key_ClearFlagNoCtrl, SACTDX_Key_ClearFlagNoCtrl), + HLL_EXPORT(Key_ClearFlagNoCtrl, sact_Key_ClearFlagNoCtrl), HLL_TODO_EXPORT(Key_ClearFlagOne, SACTDX_Key_ClearFlagOne), HLL_EXPORT(TRANS_Begin, sact_TRANS_Begin), HLL_EXPORT(TRANS_Update, sact_TRANS_Update), diff --git a/src/hll/InputDevice.c b/src/hll/InputDevice.c index cf3e4e6..4d89516 100644 --- a/src/hll/InputDevice.c +++ b/src/hll/InputDevice.c @@ -36,7 +36,7 @@ HLL_WARN_UNIMPLEMENTED( , void, InputDevice, Init, void *imainsystem); void InputDevice_ClearKeyDownFlag(void) { - key_clear_flag(); + key_clear_flag(false); } static int InputDevice_IsKeyDown(int key) diff --git a/src/hll/SACT2.c b/src/hll/SACT2.c index e32f1c4..d721480 100644 --- a/src/hll/SACT2.c +++ b/src/hll/SACT2.c @@ -794,10 +794,15 @@ bool sact_Joypad_GetDigitalStickStatus(int num, int type, bool *left, bool *righ int sact_Key_ClearFlag(void) { - key_clear_flag(); + key_clear_flag(false); return 1; } +void sact_Key_ClearFlagNoCtrl(void) +{ + key_clear_flag(true); +} + int sact_Key_IsDown(int keycode) { handle_events(); @@ -1001,7 +1006,6 @@ HLL_WARN_UNIMPLEMENTED( , void, SACTDX, SetVolumeMixerBGMGroupNum, int n); //static void SACTDX_FFT_rdft(ref array@float a); //static void SACTDX_FFT_hanning_window(ref array@float a); //static int SACTDX_Music_AnalyzeSampleData(ref array@float l, ref array@float r, ref array@int src, int chns, int bps); -//static void SACTDX_Key_ClearFlagNoCtrl(void); //static void SACTDX_Key_ClearFlagOne(int nKeyCode); int sact_TRANS_Begin(int type) @@ -1045,7 +1049,8 @@ void sact_DX_SetUsePower2Texture(bool use) } #define SACT2_EXPORTS \ - HLL_EXPORT(Init, SACT2_Init) + HLL_EXPORT(Init, SACT2_Init), \ + HLL_EXPORT(Key_ClearFlagNoCtrl, sact_Key_ClearFlagNoCtrl) #define SACTDX_EXPORTS \ HLL_EXPORT(Init, SACTDX_Init), \ @@ -1060,7 +1065,7 @@ void sact_DX_SetUsePower2Texture(bool use) HLL_TODO_EXPORT(FFT_rdft, SACTDX_FFT_rdft), \ HLL_TODO_EXPORT(FFT_hanning_window, SACTDX_FFT_hanning_window), \ HLL_TODO_EXPORT(Music_AnalyzeSampleData, SACTDX_Music_AnalyzeSampleData), \ - HLL_TODO_EXPORT(Key_ClearFlagNoCtrl, SACTDX_Key_ClearFlagNoCtrl), \ + HLL_EXPORT(Key_ClearFlagNoCtrl, sact_Key_ClearFlagNoCtrl), \ HLL_TODO_EXPORT(Key_ClearFlagOne, SACTDX_Key_ClearFlagOne), \ HLL_EXPORT(TRANS_Begin, sact_TRANS_Begin), \ HLL_EXPORT(TRANS_Update, sact_TRANS_Update), \ diff --git a/src/hll/StoatSpriteEngine.c b/src/hll/StoatSpriteEngine.c index c30693d..e151cbf 100644 --- a/src/hll/StoatSpriteEngine.c +++ b/src/hll/StoatSpriteEngine.c @@ -1106,7 +1106,7 @@ HLL_LIBRARY(StoatSpriteEngine, HLL_TODO_EXPORT(FFT_rdft, SACTDX_FFT_rdft), HLL_TODO_EXPORT(FFT_hanning_window, SACTDX_FFT_hanning_window), HLL_TODO_EXPORT(Music_AnalyzeSampleData, SACTDX_Music_AnalyzeSampleData), - HLL_TODO_EXPORT(Key_ClearFlagNoCtrl, SACTDX_Key_ClearFlagNoCtrl), + HLL_EXPORT(Key_ClearFlagNoCtrl, sact_Key_ClearFlagNoCtrl), HLL_TODO_EXPORT(Key_ClearFlagOne, SACTDX_Key_ClearFlagOne), HLL_EXPORT(TRANS_Begin, sact_TRANS_Begin), HLL_EXPORT(TRANS_Update, sact_TRANS_Update), diff --git a/src/input.c b/src/input.c index 0d4672f..cf95007 100644 --- a/src/input.c +++ b/src/input.c @@ -188,9 +188,11 @@ bool key_is_down(enum sact_keycode code) return key_state[code]; } -void key_clear_flag(void) +void key_clear_flag(bool no_ctrl) { for (int i = 0; i < VK_NR_KEYCODES; i++) { + if (no_ctrl && i == VK_CONTROL) + continue; key_state[i] = false; } }