console = { command = "", history = {}, history_pos = 0, cursor = 50, enable = function() app.push(console.update) console.command = "" end, update = function() surf.target(0) draw.rrectf(0, 92, 160, 108, 4, 1) draw.rrect(0, 92, 160, 108, 4, 13) draw.text(">", 2, 96, 13) draw.text(console.command, 6, 96, 13) if console.cursor > 24 then draw.text("_", 6+#console.command*4, 96, 13) end console.cursor = console.cursor - 1 if console.cursor == 0 then console.cursor = 50 end if key.press(key.ESCAPE) then app.pop() return end if #console.history>0 then if key.press(key.UP) and console.history_pos > 1 then console.history_pos = console.history_pos - 1 console.command = console.history[console.history_pos] elseif key.press(key.DOWN) and console.history_pos < #console.history then console.history_pos = console.history_pos + 1 console.command = console.history[console.history_pos] end end local k = key.press() if k ~= key.UNKNOWN then if k >= key.A and k <= key.Z then if key.down(key.LSHIFT) or key.down(key.RSHIFT) then console.command = console.command .. string.char(k+61) else console.command = console.command .. string.char(k+93) end elseif k == key.N0 then if key.down(key.LSHIFT) or key.down(key.RSHIFT) then console.command = console.command .. '=' elseif key.down(key.RALT) then console.command = console.command .. '}' else console.command = console.command .. '0' end elseif k == key.N1 then if key.down(key.LSHIFT) or key.down(key.RSHIFT) then console.command = console.command .. '!' elseif key.down(key.RALT) then console.command = console.command .. '|' else console.command = console.command .. '1' end elseif k == key.N2 then if key.down(key.LSHIFT) or key.down(key.RSHIFT) then console.command = console.command .. '"' elseif key.down(key.RALT) then console.command = console.command .. '@' else console.command = console.command .. '2' end elseif k == key.N3 then if key.down(key.LSHIFT) or key.down(key.RSHIFT) then console.command = console.command .. '·' elseif key.down(key.RALT) then console.command = console.command .. '#' else console.command = console.command .. '3' end elseif k == key.N4 then if key.down(key.LSHIFT) or key.down(key.RSHIFT) then console.command = console.command .. '$' elseif key.down(key.RALT) then console.command = console.command .. '~' else console.command = console.command .. '4' end elseif k == key.N5 then if key.down(key.LSHIFT) or key.down(key.RSHIFT) then console.command = console.command .. '%' elseif key.down(key.RALT) then console.command = console.command .. ' ' else console.command = console.command .. '5' end elseif k == key.N6 then if key.down(key.LSHIFT) or key.down(key.RSHIFT) then console.command = console.command .. '&' elseif key.down(key.RALT) then console.command = console.command .. ' ' else console.command = console.command .. '6' end elseif k == key.N7 then if key.down(key.LSHIFT) or key.down(key.RSHIFT) then console.command = console.command .. '/' elseif key.down(key.RALT) then console.command = console.command .. ' ' else console.command = console.command .. '7' end elseif k == key.N8 then if key.down(key.LSHIFT) or key.down(key.RSHIFT) then console.command = console.command .. '(' elseif key.down(key.RALT) then console.command = console.command .. ' ' else console.command = console.command .. '8' end elseif k == key.N9 then if key.down(key.LSHIFT) or key.down(key.RSHIFT) then console.command = console.command .. ')' elseif key.down(key.RALT) then console.command = console.command .. ' ' else console.command = console.command .. '9' end elseif k == key.PERIOD then if key.down(key.LSHIFT) or key.down(key.RSHIFT) then console.command = console.command .. ':' else console.command = console.command .. '.' end elseif k == key.COMMA then if key.down(key.LSHIFT) or key.down(key.RSHIFT) then console.command = console.command .. ';' else console.command = console.command .. ',' end elseif k == key.GRAVE then if key.down(key.LSHIFT) or key.down(key.RSHIFT) then console.command = console.command .. ' ' elseif key.down(key.RALT) then console.command = console.command .. '\\' else console.command = console.command .. ' ' end elseif k == key.EQUALS then if key.down(key.LSHIFT) or key.down(key.RSHIFT) then console.command = console.command .. '¿' else console.command = console.command .. '¡' end elseif k == key.SLASH then if key.down(key.LSHIFT) or key.down(key.RSHIFT) then console.command = console.command .. '_' elseif key.down(key.RALT) then console.command = console.command .. ' ' else console.command = console.command .. '-' end elseif k == key.APOSTROPHE then if key.down(key.LSHIFT) or key.down(key.RSHIFT) then console.command = console.command .. '"' elseif key.down(key.RALT) then console.command = console.command .. '{' else console.command = console.command .. '\'' end elseif k == key.SEMICOLON then if key.down(key.LSHIFT) or key.down(key.RSHIFT) then console.command = console.command .. 'Ñ' elseif key.down(key.RALT) then console.command = console.command .. ' ' else console.command = console.command .. 'ñ' end elseif k == key.BACKSLASH then if key.down(key.LSHIFT) or key.down(key.RSHIFT) then console.command = console.command .. 'Ç' elseif key.down(key.RALT) then console.command = console.command .. '}' else console.command = console.command .. 'ç' end elseif k == key.RIGHTBRACKET then if key.down(key.LSHIFT) or key.down(key.RSHIFT) then console.command = console.command .. '*' elseif key.down(key.RALT) then console.command = console.command .. ']' else console.command = console.command .. '+' end elseif k == key.LEFTBRACKET then if key.down(key.LSHIFT) or key.down(key.RSHIFT) then console.command = console.command .. '^' elseif key.down(key.RALT) then console.command = console.command .. '[' else console.command = console.command .. '`' end elseif k == key.NONUSBACKSLASH then if key.down(key.LSHIFT) or key.down(key.RSHIFT) then console.command = console.command .. '>' elseif key.down(key.RALT) then console.command = console.command .. ' ' else console.command = console.command .. '<' end elseif k == key.MINUS then if key.down(key.LSHIFT) or key.down(key.RSHIFT) then console.command = console.command .. '?' else console.command = console.command .. '\'' end elseif k == key.SPACE then console.command = console.command .. ' ' elseif k == key.BACKSPACE then console.command = console.command:sub(1, #console.command - 1) elseif k == key.RETURN then table.insert(console.history, console.command) console.history_pos = #console.history+1 local f,err = load(console.command) if not f then print("Error al compilar:", err) else print(f()) app.pop() end end end end, }