// These tables map the js keyboard keys to the spice equivalent
wdi.KeymapES = function() {

    // regular keys with associated chars. The columns  means all the event flux to activate the key (i.e. [key up, key down])
    // all the js events associated to these keys should have a charKey associated
    var charmapES = {};
    charmapES['º']   = [[0x29, 0, 0, 0], [0xA9, 0, 0, 0]];
    charmapES['ª']   = [[0x2A, 0, 0, 0], [0x29, 0, 0, 0], [0xA9, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['\\']  = [[0xE0, 0x38, 0, 0], [0x29, 0, 0, 0], [0xA9, 0, 0, 0], [0xE0, 0xB8, 0, 0]];
    charmapES['1']   = [[0x2, 0, 0, 0], [0x82, 0, 0, 0]];
    charmapES['!']   = [[0x2A, 0, 0, 0], [0x2, 0, 0, 0], [0x82, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['|']   = [[0xE0, 0x38, 0, 0], [0x2, 0, 0, 0], [0x82, 0, 0, 0], [0xE0, 0xB8, 0, 0]];
    charmapES['2']   = [[0x3, 0, 0, 0], [0x83, 0, 0, 0]];
    charmapES['"']   = [[0x2A, 0, 0, 0], [0x3, 0, 0, 0], [0x83, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['@']   = [[0xE0, 0x38, 0, 0], [0x3, 0, 0, 0], [0x83, 0, 0, 0], [0xE0, 0xB8, 0, 0]];
    charmapES['3']   = [[0x4, 0, 0, 0], [0x84, 0, 0, 0]];
    charmapES['·']   = [[0x2A, 0, 0, 0], [0x4, 0, 0, 0], [0x84, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['#']   = [[0xE0, 0x38, 0, 0], [0x4, 0, 0, 0], [0x84, 0, 0, 0], [0xE0, 0xB8, 0, 0]];
    charmapES['4']   = [[0x5, 0, 0, 0], [0x85, 0, 0, 0]];
    charmapES['$']   = [[0x2A, 0, 0, 0], [0x5, 0, 0, 0], [0x85, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['~']   = [[0xE0, 0x38, 0, 0], [0x5, 0, 0, 0], [0x85, 0, 0, 0], [0xE0, 0xB8, 0, 0]];
    charmapES['5']   = [[0x6, 0, 0, 0], [0x86, 0, 0, 0]];
    charmapES['%']   = [[0x2A, 0, 0, 0], [0x6, 0, 0, 0], [0x86, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['6']   = [[0x7, 0, 0, 0], [0x87, 0, 0, 0]];
    charmapES['&']   = [[0x2A, 0, 0, 0], [0x7, 0, 0, 0], [0x87, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['¬']   = [[0xE0, 0x38, 0, 0], [0x7, 0, 0, 0], [0x87, 0, 0, 0], [0xE0, 0xB8, 0, 0]];
    charmapES['7']   = [[0x8, 0, 0, 0], [0x88, 0, 0, 0]];
    charmapES['/']   = [[0x2A, 0, 0, 0], [0x8, 0, 0, 0], [0x88, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['8']   = [[0x9, 0, 0, 0], [0x89, 0, 0, 0]];
    charmapES['(']   = [[0x2A, 0, 0, 0], [0x9, 0, 0, 0], [0x89, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['9']   = [[0x0A, 0, 0, 0], [0x8A, 0, 0, 0]];
    charmapES[')']   = [[0x2A, 0, 0, 0], [0x0A, 0, 0, 0], [0x8A, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['0']   = [[0x0B, 0, 0, 0], [0x8B, 0, 0, 0]];
    charmapES['=']   = [[0x2A, 0, 0, 0], [0x0B, 0, 0, 0], [0x8B, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['\'']  = [[0x0C, 0, 0, 0], [0x8C, 0, 0, 0]];
    charmapES['?']   = [[0x2A, 0, 0, 0], [0x0C, 0, 0, 0], [0x8C, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['¡']   = [[0x0D, 0, 0, 0], [0x8D, 0, 0, 0]];
    charmapES['¿']   = [[0x2A, 0, 0, 0], [0x0D, 0, 0, 0], [0x8D, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['q']   = [[0x10, 0, 0, 0], [0x90, 0, 0, 0]];
    charmapES['Q']   = [[0x2A, 0, 0, 0], [0x10, 0, 0, 0], [0x90, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['w']   = [[0x11, 0, 0, 0], [0x91, 0, 0, 0]];
    charmapES['W']   = [[0x2A, 0, 0, 0], [0x11, 0, 0, 0], [0x91, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['e']   = [[0x12, 0, 0, 0], [0x92, 0, 0, 0]];
    charmapES['E']   = [[0x2A, 0, 0, 0], [0x12, 0, 0, 0], [0x92, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['€']   = [[0xE0, 0x38, 0, 0], [0x12, 0, 0, 0], [0x92, 0, 0, 0], [0xE0, 0xB8, 0, 0]];
    charmapES['r']   = [[0x13, 0, 0, 0], [0x93, 0, 0, 0]];
    charmapES['R']   = [[0x2A, 0, 0, 0], [0x13, 0, 0, 0], [0x93, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['t']   = [[0x14, 0, 0, 0], [0x94, 0, 0, 0]];
    charmapES['T']   = [[0x2A, 0, 0, 0], [0x14, 0, 0, 0], [0x94, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['y']   = [[0x15, 0, 0, 0], [0x95, 0, 0, 0]];
    charmapES['Y']   = [[0x2A, 0, 0, 0], [0x15, 0, 0, 0], [0x95, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['u']   = [[0x16, 0, 0, 0], [0x96, 0, 0, 0]];
    charmapES['U']   = [[0x2A, 0, 0, 0], [0x16, 0, 0, 0], [0x96, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['i']   = [[0x17, 0, 0, 0], [0x97, 0, 0, 0]];
    charmapES['I']   = [[0x2A, 0, 0, 0], [0x17, 0, 0, 0], [0x97, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['o']   = [[0x18, 0, 0, 0], [0x98, 0, 0, 0]];
    charmapES['O']   = [[0x2A, 0, 0, 0], [0x18, 0, 0, 0], [0x98, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['p']   = [[0x19, 0, 0, 0], [0x99, 0, 0, 0]];
    charmapES['P']   = [[0x2A, 0, 0, 0], [0x19, 0, 0, 0], [0x99, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['`']   = [[0x1A, 0, 0, 0], [0x9A, 0, 0, 0], [0x39, 0, 0, 0], [0xb9, 0, 0, 0]];
    charmapES['à']   = [[0x1A, 0, 0, 0], [0x9A, 0, 0, 0], [0x1E, 0, 0, 0], [0x9E, 0, 0, 0]];
    charmapES['À']   = [[0xAA, 0, 0, 0], [0x1A, 0, 0, 0], [0x9A, 0, 0, 0], [0x2A, 0, 0, 0], [0x1E, 0, 0, 0], [0x9E, 0, 0, 0]];
    charmapES['è']   = [[0x1A, 0, 0, 0], [0x9A, 0, 0, 0], [0x12, 0, 0, 0], [0x92, 0, 0, 0]];
    charmapES['È']   = [[0xAA, 0, 0, 0], [0x1A, 0, 0, 0], [0x9A, 0, 0, 0], [0x2A, 0, 0, 0], [0x12, 0, 0, 0], [0x92, 0, 0, 0]];
    charmapES['ì']   = [[0x1A, 0, 0, 0], [0x9A, 0, 0, 0], [0x17, 0, 0, 0], [0x97, 0, 0, 0]];
    charmapES['Ì']   = [[0xAA, 0, 0, 0], [0x1A, 0, 0, 0], [0x9A, 0, 0, 0], [0x2A, 0, 0, 0], [0x17, 0, 0, 0], [0x97, 0, 0, 0]];
    charmapES['ò']   = [[0x1A, 0, 0, 0], [0x9A, 0, 0, 0], [0x18, 0, 0, 0], [0x98, 0, 0, 0]];
    charmapES['Ò']   = [[0xAA, 0, 0, 0], [0x1A, 0, 0, 0], [0x9A, 0, 0, 0], [0x2A, 0, 0, 0], [0x18, 0, 0, 0], [0x98, 0, 0, 0]];
    charmapES['ù']   = [[0x1A, 0, 0, 0], [0x9A, 0, 0, 0], [0x16, 0, 0, 0], [0x96, 0, 0, 0]];
    charmapES['Ù']   = [[0xAA, 0, 0, 0], [0x1A, 0, 0, 0], [0x9A, 0, 0, 0], [0x2A, 0, 0, 0], [0x16, 0, 0, 0], [0x96, 0, 0, 0]];
    charmapES['â']   = [[0x2A, 0, 0, 0], [0x1A, 0, 0, 0], [0x9A, 0, 0, 0], [0xAA, 0, 0, 0], [0x1E, 0, 0, 0], [0x9E, 0, 0, 0]];
    charmapES['Â']   = [[0x1A, 0, 0, 0], [0x9A, 0, 0, 0], [0x1E, 0, 0, 0], [0x9E, 0, 0, 0]];
    charmapES['ê']   = [[0x2A, 0, 0, 0], [0x1A, 0, 0, 0], [0x9A, 0, 0, 0], [0xAA, 0, 0, 0], [0x12, 0, 0, 0], [0x92, 0, 0, 0]];
    charmapES['Ê']   = [[0x1A, 0, 0, 0], [0x9A, 0, 0, 0], [0x12, 0, 0, 0], [0x92, 0, 0, 0]];
    charmapES['î']   = [[0x2A, 0, 0, 0], [0x1A, 0, 0, 0], [0x9A, 0, 0, 0], [0xAA, 0, 0, 0], [0x17, 0, 0, 0], [0x97, 0, 0, 0]];
    charmapES['Î']   = [[0x1A, 0, 0, 0], [0x9A, 0, 0, 0], [0x17, 0, 0, 0], [0x97, 0, 0, 0]];
    charmapES['ô']   = [[0x2A, 0, 0, 0], [0x1A, 0, 0, 0], [0x9A, 0, 0, 0], [0xAA, 0, 0, 0], [0x18, 0, 0, 0], [0x98, 0, 0, 0]];
    charmapES['Ô']   = [[0x1A, 0, 0, 0], [0x9A, 0, 0, 0], [0x18, 0, 0, 0], [0x98, 0, 0, 0]];
    charmapES['û']   = [[0x2A, 0, 0, 0], [0x1A, 0, 0, 0], [0x9A, 0, 0, 0], [0xAA, 0, 0, 0], [0x16, 0, 0, 0], [0x96, 0, 0, 0]];
    charmapES['Û']   = [[0x1A, 0, 0, 0], [0x9A, 0, 0, 0], [0x16, 0, 0, 0], [0x96, 0, 0, 0]];
    charmapES['^']   = [[0x2A, 0, 0, 0], [0x1A, 0, 0, 0], [0x9A, 0, 0, 0], [0xAA, 0, 0, 0], [0x39, 0, 0, 0], [0xb9, 0, 0, 0]];
    charmapES['[']   = [[0xE0, 0x38, 0, 0], [0x1A, 0, 0, 0], [0x9A, 0, 0, 0], [0xE0, 0xB8, 0, 0]];
    charmapES['+']   = [[0x1B, 0, 0, 0], [0x9B, 0, 0, 0]];
    charmapES['*']   = [[0x2A, 0, 0, 0], [0x1B, 0, 0, 0], [0x9B, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES[']']   = [[0xE0, 0x38, 0, 0], [0x1B, 0, 0, 0], [0x9B, 0, 0, 0], [0xE0, 0xB8, 0, 0]];
    charmapES['a']   = [[0x1E, 0, 0, 0], [0x9E, 0, 0, 0]];
    charmapES['A']   = [[0x2A, 0, 0, 0], [0x1E, 0, 0, 0], [0x9E, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['s']   = [[0x1F, 0, 0, 0], [0x9F, 0, 0, 0]];
    charmapES['S']   = [[0x2A, 0, 0, 0], [0x1F, 0, 0, 0], [0x9F, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['d']   = [[0x20, 0, 0, 0], [0xA0, 0, 0, 0]];
    charmapES['D']   = [[0x2A, 0, 0, 0], [0x20, 0, 0, 0], [0xA0, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['f']   = [[0x21, 0, 0, 0], [0xA1, 0, 0, 0]];
    charmapES['F']   = [[0x2A, 0, 0, 0], [0x21, 0, 0, 0], [0xA1, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['g']   = [[0x22, 0, 0, 0], [0xA2, 0, 0, 0]];
    charmapES['G']   = [[0x2A, 0, 0, 0], [0x22, 0, 0, 0], [0xA2, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['h']   = [[0x23, 0, 0, 0], [0xA3, 0, 0, 0]];
    charmapES['H']   = [[0x2A, 0, 0, 0], [0x23, 0, 0, 0], [0xA3, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['j']   = [[0x24, 0, 0, 0], [0xA4, 0, 0, 0]];
    charmapES['J']   = [[0x2A, 0, 0, 0], [0x24, 0, 0, 0], [0xA4, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['k']   = [[0x25, 0, 0, 0], [0xA5, 0, 0, 0]];
    charmapES['K']   = [[0x2A, 0, 0, 0], [0x25, 0, 0, 0], [0xA5, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['l']   = [[0x26, 0, 0, 0], [0xA6, 0, 0, 0]];
    charmapES['L']   = [[0x2A, 0, 0, 0], [0x26, 0, 0, 0], [0xA6, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['ñ']   = [[0x27, 0, 0, 0], [0xA7, 0, 0, 0]];
    charmapES['Ñ']   = [[0x2A, 0, 0, 0], [0x27, 0, 0, 0], [0xA7, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['á']   = [[0x28, 0, 0, 0], [0xA8, 0, 0, 0], [0x1E, 0, 0, 0], [0x9E, 0, 0, 0]];
    charmapES['Á']   = [[0xAA, 0, 0, 0], [0x28, 0, 0, 0], [0xA8, 0, 0, 0], [0x2A, 0, 0, 0], [0x1E, 0, 0, 0], [0x9E, 0, 0, 0]];
    charmapES['é']   = [[0x28, 0, 0, 0], [0xA8, 0, 0, 0], [0x12, 0, 0, 0], [0x92, 0, 0, 0]];
    charmapES['É']   = [[0xAA, 0, 0, 0], [0x28, 0, 0, 0], [0xA8, 0, 0, 0], [0x2A, 0, 0, 0], [0x12, 0, 0, 0], [0x92, 0, 0, 0]];
    charmapES['í']   = [[0x28, 0, 0, 0], [0xA8, 0, 0, 0], [0x17, 0, 0, 0], [0x97, 0, 0, 0]];
    charmapES['Í']   = [[0xAA, 0, 0, 0], [0x28, 0, 0, 0], [0xA8, 0, 0, 0], [0x2A, 0, 0, 0], [0x17, 0, 0, 0], [0x97, 0, 0, 0]];
    charmapES['ó']   = [[0x28, 0, 0, 0], [0xA8, 0, 0, 0], [0x18, 0, 0, 0], [0x98, 0, 0, 0]];
    charmapES['Ó']   = [[0xAA, 0, 0, 0], [0x28, 0, 0, 0], [0xA8, 0, 0, 0], [0x2A, 0, 0, 0], [0x18, 0, 0, 0], [0x98, 0, 0, 0]];
    charmapES['ú']   = [[0x28, 0, 0, 0], [0xA8, 0, 0, 0], [0x16, 0, 0, 0], [0x96, 0, 0, 0]];
    charmapES['Ú']   = [[0xAA, 0, 0, 0], [0x28, 0, 0, 0], [0xA8, 0, 0, 0], [0x2A, 0, 0, 0], [0x16, 0, 0, 0], [0x96, 0, 0, 0]];
    charmapES['ä']   = [[0x2A, 0, 0, 0], [0x28, 0, 0, 0], [0xA8, 0, 0, 0], [0xAA, 0, 0, 0], [0x1E, 0, 0, 0], [0x9E, 0, 0, 0]];
    charmapES['Ä']   = [[0x28, 0, 0, 0], [0xA8, 0, 0, 0], [0x1E, 0, 0, 0], [0x9E, 0, 0, 0]];
    charmapES['ë']   = [[0x2A, 0, 0, 0], [0x28, 0, 0, 0], [0xA8, 0, 0, 0], [0xAA, 0, 0, 0], [0x12, 0, 0, 0], [0x92, 0, 0, 0]];
    charmapES['Ë']   = [[0x28, 0, 0, 0], [0xA8, 0, 0, 0], [0x12, 0, 0, 0], [0x92, 0, 0, 0]];
    charmapES['ï']   = [[0x2A, 0, 0, 0], [0x28, 0, 0, 0], [0xA8, 0, 0, 0], [0xAA, 0, 0, 0], [0x17, 0, 0, 0], [0x97, 0, 0, 0]];
    charmapES['Ï']   = [[0x28, 0, 0, 0], [0xA8, 0, 0, 0], [0x17, 0, 0, 0], [0x97, 0, 0, 0]];
    charmapES['ö']   = [[0x2A, 0, 0, 0], [0x28, 0, 0, 0], [0xA8, 0, 0, 0], [0xAA, 0, 0, 0], [0x18, 0, 0, 0], [0x98, 0, 0, 0]];
    charmapES['Ö']   = [[0x28, 0, 0, 0], [0xA8, 0, 0, 0], [0x18, 0, 0, 0], [0x98, 0, 0, 0]];
    charmapES['ü']   = [[0x2A, 0, 0, 0], [0x28, 0, 0, 0], [0xA8, 0, 0, 0], [0xAA, 0, 0, 0], [0x16, 0, 0, 0], [0x96, 0, 0, 0]];
    charmapES['Ü']   = [[0x28, 0, 0, 0], [0xA8, 0, 0, 0], [0x16, 0, 0, 0], [0x96, 0, 0, 0]];
    charmapES['{']   = [[0xE0, 0x38, 0, 0], [0x28, 0, 0, 0], [0xA8, 0, 0, 0], [0xE0, 0xB8, 0, 0]];
    charmapES['ç']   = [[0x2B, 0, 0, 0], [0xAB, 0, 0, 0]];
    charmapES['Ç']   = [[0x2A, 0, 0, 0], [0x2B, 0, 0, 0], [0xAB, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['}']   = [[0xE0, 0x38, 0, 0], [0x2B, 0, 0, 0], [0xAB, 0, 0, 0], [0xE0, 0xB8, 0, 0]];
    charmapES['<']   = [[0x56, 0, 0, 0], [0xD6, 0, 0, 0]];
    charmapES['>']   = [[0x2A, 0, 0, 0], [0x56, 0, 0, 0], [0xD6, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['z']   = [[0x2C, 0, 0, 0], [0xAC, 0, 0, 0]];
    charmapES['Z']   = [[0x2A, 0, 0, 0], [0x2C, 0, 0, 0], [0xAC, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['x']   = [[0x2D, 0, 0, 0], [0xAD, 0, 0, 0]];
    charmapES['X']   = [[0x2A, 0, 0, 0], [0x2D, 0, 0, 0], [0xAD, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['c']   = [[0x2E, 0, 0, 0], [0xAE, 0, 0, 0]];
    charmapES['C']   = [[0x2A, 0, 0, 0], [0x2E, 0, 0, 0], [0xAE, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['v']   = [[0x2F, 0, 0, 0], [0xAF, 0, 0, 0]];
    charmapES['V']   = [[0x2A, 0, 0, 0], [0x2F, 0, 0, 0], [0xAF, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['b']   = [[0x30, 0, 0, 0], [0xB0, 0, 0, 0]];
    charmapES['B']   = [[0x2A, 0, 0, 0], [0x30, 0, 0, 0], [0xB0, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['n']   = [[0x31, 0, 0, 0], [0xB1, 0, 0, 0]];
    charmapES['N']   = [[0x2A, 0, 0, 0], [0x31, 0, 0, 0], [0xB1, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['m']   = [[0x32, 0, 0, 0], [0xB2, 0, 0, 0]];
    charmapES['M']   = [[0x2A, 0, 0, 0], [0x32, 0, 0, 0], [0xB2, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES[',']   = [[0x33, 0, 0, 0], [0xB3, 0, 0, 0]];
    charmapES[';']   = [[0x2A, 0, 0, 0], [0x33, 0, 0, 0], [0xB3, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['.']   = [[0x34, 0, 0, 0], [0xB4, 0, 0, 0]];
    charmapES[':']   = [[0x2A, 0, 0, 0], [0x34, 0, 0, 0], [0xB4, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES['-']   = [[0x35, 0, 0, 0], [0xB5, 0, 0, 0]];
    charmapES['_']   = [[0x2A, 0, 0, 0], [0x35, 0, 0, 0], [0xB5, 0, 0, 0], [0xAA, 0, 0, 0]];
    charmapES[' ']   = [[0x39, 0, 0, 0], [0xb9, 0, 0, 0]];

    // keyboard keys without character associated.
    // all the js events associated to these keys should have a keyChar associated
    var keymapES = [];

    keymapES[27]                 = 0x1; // ESC
    keymapES[9]                 = 0x0F; // TAB
    //keymapES[20]                = 0x3A; // BLOQ.MAY. => see the charmap, all the capital letters and shift chars send a shift in their sequence
    keymapES[16]                = 0x2A; // LEFT SHIFT and RIGHT SHIFT
	keymapES[91]                = 0x1D; // LEFT GUI (META, COMMAND) BINDED TO CONTROL
	keymapES[17]                = 0x1D; // LEFT CONTROL and RIGHT CONTROL
    //keymapES[32]                = 0x39; // SPACE => see the charmap
    keymapES[8]                 = 0x0E; // BACKSPACE
    keymapES[13]                = 0x1C; // ENTER
    //keymapES[225]                 = 0x38; // RIGHT ALT (ALT GR) => see the charmap, all the altgr chars send a altgr in their sequence
    keymapES[18]                = 0x38; // LEFT ALT
  // keymapES[92]                = 0x5C; // RIGHT GUI (WINDOWS)
    keymapES[38]                = 0x48; // UP ARROW
    keymapES[37]                = 0x4B; // LEFT ARROW
    keymapES[40]                = 0x50; // DOWN ARROW
    keymapES[39]                = 0x4D; // RIGHT ARROW
    keymapES[45]                = 0x52; // INSERT
    keymapES[46]                = 0x53; // DELETE
    keymapES[36]                = 0x47; // HOME
    keymapES[35]                = 0x4F; // FIN
    keymapES[33]                = 0x49; // PAGE UP
    keymapES[34]                = 0x51; // PAGE UP
    keymapES[144]               = 0x45; // BLOQ.NUM.
    keymapES[145]                = 0x46; // SCROLL LOCK
    keymapES[112]                = 0x3B; // F1
    keymapES[113]                = 0x3C; // F2
    keymapES[114]                = 0x3D; // F3
    keymapES[115]                = 0x3E; // F4
    keymapES[116]                = 0x3F; // F5
    keymapES[117]                = 0x40; // F6
    keymapES[118]                = 0x41; // F7
    keymapES[119]                = 0x42; // F8
    keymapES[120]                = 0x43; // F9
    keymapES[121]                = 0x44; // F10
    keymapES[122]                = 0x57; // F11
    keymapES[123]                = 0x58; // F12

    // combination keys with ctrl
    var ctrlKeymapES = [];

    ctrlKeymapES[65]                = 0x1E; // a
    ctrlKeymapES[81]                = 0x10; // q
    ctrlKeymapES[87]                = 0x11; // w
    ctrlKeymapES[69]                = 0x12; // e
    ctrlKeymapES[82]                = 0x13; // r
    ctrlKeymapES[84]                = 0x14; // t
    ctrlKeymapES[89]                = 0x15; // y
    ctrlKeymapES[85]                = 0x16; // u
    ctrlKeymapES[73]                = 0x17; // i
    ctrlKeymapES[79]                = 0x18; // o
    ctrlKeymapES[80]                = 0x19; // p
    ctrlKeymapES[65]                = 0x1E; // a
    ctrlKeymapES[83]                = 0x1F; // s
    ctrlKeymapES[68]                = 0x20; // d
    ctrlKeymapES[70]                = 0x21; // f
    ctrlKeymapES[71]                = 0x22; // g
    ctrlKeymapES[72]                = 0x23; // h
    ctrlKeymapES[74]                = 0x24; // j
    ctrlKeymapES[75]                = 0x25; // k
    ctrlKeymapES[76]                = 0x26; // l
    ctrlKeymapES[90]                = 0x2C; // z
    ctrlKeymapES[88]                = 0x2D; // x
    ctrlKeymapES[67]                = 0x2E; // c
    //ctrlKeymapES[86]                = 0x2F; // v      to enable set disableClipboard = true in run.js
    ctrlKeymapES[66]                = 0x30; // b
    ctrlKeymapES[78]                = 0x31; // n
    ctrlKeymapES[77]                = 0x32; // m

    // reserved ctrl+? combinations we want to intercept from browser and inject manually to spice
    var reservedCtrlKeymap = [];
    reservedCtrlKeymap[86] = 0x2F;

    return {
        getKeymap: function() {
            return keymapES;
        },

        getCtrlKeymap: function() {
            return ctrlKeymapES;
        },

        getReservedCtrlKeymap: function() {
            return reservedCtrlKeymap;
        },

        getCharmap: function() {
            return charmapES;
        },

        setCtrlKey: function (key, val) {
            ctrlKeymapES[key] = val;
        }
    };
}( );