From 2fc29e6f8d08daa3c955998486221dbbee88a0bb Mon Sep 17 00:00:00 2001 From: gamax92 Date: Tue, 23 Jun 2015 00:11:14 -0600 Subject: [PATCH] Keyboard fixes All non mapped codes will default to zero Add in a quick hack to correct the codepoints for tab and enter, which SDL doesn't generate a SDL_TextInputEvent for --- src/component/keyboard_sdl2.lua | 16 +++++++++++++--- src/support/sdl_to_lwjgl.lua | 5 ----- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/component/keyboard_sdl2.lua b/src/component/keyboard_sdl2.lua index 8068f51..8d9484f 100644 --- a/src/component/keyboard_sdl2.lua +++ b/src/component/keyboard_sdl2.lua @@ -9,19 +9,29 @@ local keys = require("support.sdl_to_lwjgl") local code2char = {} +local function setLatest(char) + kbdcodes[#kbdcodes].char = char + code2char[kbdcodes[#kbdcodes].code] = char +end + function elsa.textinput(event) local textevent = ffi.cast("SDL_TextInputEvent", event) local text = ffi.string(textevent.text) cprint("textinput",text) - kbdcodes[#kbdcodes].char = lua_utf8.byte(text) - code2char[kbdcodes[#kbdcodes].code] = kbdcodes[#kbdcodes].char + setLatest(lua_utf8.byte(text)) end function elsa.keydown(event) local keyevent = ffi.cast("SDL_KeyboardEvent", event) local key = keyevent.keysym.scancode cprint("keydown",keys[key]) - table.insert(kbdcodes,{type="key_down",addr=address,code=keys[key]}) + table.insert(kbdcodes,{type="key_down",addr=address,code=keys[key] or 0}) + -- TODO: Lovely SDL Hacks + if keys[key] == 15 then + setLatest(9) + elseif keys[key] == 28 or keys[key] == 156 then + setLatest(13) + end if keys[key] == 210 then if SDL.hasClipboardText() > 0 then table.insert(machine.signals,{"clipboard",address,ffi.string(SDL.getClipboardText())}) diff --git a/src/support/sdl_to_lwjgl.lua b/src/support/sdl_to_lwjgl.lua index af44a5d..21863e5 100644 --- a/src/support/sdl_to_lwjgl.lua +++ b/src/support/sdl_to_lwjgl.lua @@ -43,7 +43,6 @@ return { [46]=13, [47]=26, [48]=27, -[49]=0, [51]=39, [52]=40, [53]=41, @@ -85,20 +84,16 @@ return { [90]=208, [91]=209, [92]=203, -[93]=0, [94]=205, [95]=199, [96]=200, [97]=201, [98]=210, [99]=211, -[101]=0, [224]=29, [225]=42, [226]=56, -[227]=0, [228]=157, [229]=54, [230]=184, -[231]=0, }