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
This commit is contained in:
gamax92 2015-06-23 00:11:14 -06:00
parent 046907c44d
commit 2fc29e6f8d
2 changed files with 13 additions and 8 deletions

View File

@ -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())})

View File

@ -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,
}