|
@@ -263,6 +263,7 @@ NK_API int
|
|
|
nk_sdl_handle_event(SDL_Event *evt)
|
|
|
{
|
|
|
struct nk_context *ctx = &sdl.ctx;
|
|
|
+ int ctrl_down = SDL_GetModState() & (KMOD_LCTRL | KMOD_RCTRL);
|
|
|
|
|
|
switch(evt->type)
|
|
|
{
|
|
@@ -270,7 +271,6 @@ nk_sdl_handle_event(SDL_Event *evt)
|
|
|
case SDL_KEYDOWN:
|
|
|
{
|
|
|
int down = evt->type == SDL_KEYDOWN;
|
|
|
- const Uint8* state = SDL_GetKeyboardState(0);
|
|
|
switch(evt->key.keysym.sym)
|
|
|
{
|
|
|
case SDLK_RSHIFT: /* RSHIFT & LSHIFT share same routine */
|
|
@@ -288,26 +288,26 @@ nk_sdl_handle_event(SDL_Event *evt)
|
|
|
nk_input_key(ctx, NK_KEY_SCROLL_END, down); break;
|
|
|
case SDLK_PAGEDOWN: nk_input_key(ctx, NK_KEY_SCROLL_DOWN, down); break;
|
|
|
case SDLK_PAGEUP: nk_input_key(ctx, NK_KEY_SCROLL_UP, down); break;
|
|
|
- case SDLK_z: nk_input_key(ctx, NK_KEY_TEXT_UNDO, down && state[SDL_SCANCODE_LCTRL]); break;
|
|
|
- case SDLK_r: nk_input_key(ctx, NK_KEY_TEXT_REDO, down && state[SDL_SCANCODE_LCTRL]); break;
|
|
|
- case SDLK_c: nk_input_key(ctx, NK_KEY_COPY, down && state[SDL_SCANCODE_LCTRL]); break;
|
|
|
- case SDLK_v: nk_input_key(ctx, NK_KEY_PASTE, down && state[SDL_SCANCODE_LCTRL]); break;
|
|
|
- case SDLK_x: nk_input_key(ctx, NK_KEY_CUT, down && state[SDL_SCANCODE_LCTRL]); break;
|
|
|
- case SDLK_b: nk_input_key(ctx, NK_KEY_TEXT_LINE_START, down && state[SDL_SCANCODE_LCTRL]); break;
|
|
|
- case SDLK_e: nk_input_key(ctx, NK_KEY_TEXT_LINE_END, down && state[SDL_SCANCODE_LCTRL]); break;
|
|
|
+ case SDLK_z: nk_input_key(ctx, NK_KEY_TEXT_UNDO, down && ctrl_down); break;
|
|
|
+ case SDLK_r: nk_input_key(ctx, NK_KEY_TEXT_REDO, down && ctrl_down); break;
|
|
|
+ case SDLK_c: nk_input_key(ctx, NK_KEY_COPY, down && ctrl_down); break;
|
|
|
+ case SDLK_v: nk_input_key(ctx, NK_KEY_PASTE, down && ctrl_down); break;
|
|
|
+ case SDLK_x: nk_input_key(ctx, NK_KEY_CUT, down && ctrl_down); break;
|
|
|
+ case SDLK_b: nk_input_key(ctx, NK_KEY_TEXT_LINE_START, down && ctrl_down); break;
|
|
|
+ case SDLK_e: nk_input_key(ctx, NK_KEY_TEXT_LINE_END, down && ctrl_down); break;
|
|
|
case SDLK_UP: nk_input_key(ctx, NK_KEY_UP, down); break;
|
|
|
case SDLK_DOWN: nk_input_key(ctx, NK_KEY_DOWN, down); break;
|
|
|
case SDLK_a:
|
|
|
- if(state[SDL_SCANCODE_LCTRL])
|
|
|
+ if (ctrl_down)
|
|
|
nk_input_key(ctx,NK_KEY_TEXT_SELECT_ALL, down);
|
|
|
break;
|
|
|
case SDLK_LEFT:
|
|
|
- if (state[SDL_SCANCODE_LCTRL])
|
|
|
+ if (ctrl_down)
|
|
|
nk_input_key(ctx, NK_KEY_TEXT_WORD_LEFT, down);
|
|
|
else nk_input_key(ctx, NK_KEY_LEFT, down);
|
|
|
break;
|
|
|
case SDLK_RIGHT:
|
|
|
- if (state[SDL_SCANCODE_LCTRL])
|
|
|
+ if (ctrl_down)
|
|
|
nk_input_key(ctx, NK_KEY_TEXT_WORD_RIGHT, down);
|
|
|
else nk_input_key(ctx, NK_KEY_RIGHT, down);
|
|
|
break;
|