Example #1
0
 def do_get_keycode(self, client_keycode, keyname, pressed, modifiers,
                    keyval, keystr, group):
     keycode = KEYCODES.get(keyname, -1)
     if keycode == -1 and keystr and len(keystr) == 1:
         v = VkKeyScanW(keystr)
         vk_code = v & 0xff
         if vk_code > 0 and vk_code != 0xff:
             keycode = vk_code
     log("get_keycode%s=%s", (client_keycode, keyname, pressed, modifiers,
                              keyval, keystr, group), keycode)
     return keycode, group
Example #2
0
def init_keycodes():
    #lookup the constants:
    keycodes = {}
    for vk, name in VIRTUAL_KEYS:
        vk_name = "VK_%s" % vk
        if hasattr(win32con, vk_name):
            val = getattr(win32con, vk_name)
            keycodes[name] = val
            log("KEYCODES[%s]=win32con.%s=%s", name, vk_name, val)
        elif vk in DEFS:
            #fallback to our hardcoded definitions:
            val = DEFS[vk]
            keycodes[name] = val
            log("KEYCODES[%s]=%s=%s", name, vk, val)
        else:
            log.warn("missing key constant: %s", vk_name)

    for name, char in KEYSYM_DEFS.items():
        if len(char) != 1:
            log.warn("invalid character '%s' : '%s' (len=%i)", name, char,
                     len(char))
            continue
        v = VkKeyScanW(char)
        vk_code = v & 0xff
        if vk_code > 0 and vk_code != 0xff:
            log("KEYCODE[%s]=%i (%s)", char, vk_code, name)
            keycodes[name] = vk_code
        else:
            log("no keycode for %r (%s)", char, name)

    keycodes.update({
        "Shift_L": win32con.VK_LSHIFT,
        "Shift_R": win32con.VK_RSHIFT,
        "Control_L": win32con.VK_LCONTROL,
        "Control_R": win32con.VK_RCONTROL,
        "Caps_Lock": win32con.VK_CAPITAL,
        "Num_Lock": win32con.VK_NUMLOCK,
        "Scroll_Lock": win32con.VK_SCROLL,
    })

    for c in "ABCDEFGHIJKLMNOPQRSTUVWXYZ":
        keycodes[c] = ord(c)
        keycodes[c.lower()] = ord(c)
    for c in "0123456789":
        keycodes[c] = ord(c)
    return keycodes
Example #3
0
        val = DEFS[vk]
        KEYCODES[name] = val
        log("KEYCODES[%s]=%s=%s", name, vk, val)
    else:
        log.warn("missing key constant: %s", vk_name)

for name, char in KEYSYM_DEFS.items():
    try:
        bchar = char.encode("latin1")
    except:
        continue
    if len(char) != 1:
        log.warn("invalid character '%s' : '%s' (len=%i)", name, char,
                 len(char))
        continue
    v = VkKeyScanW(char)
    vk_code = v & 0xff
    if vk_code > 0 and vk_code != 0xff:
        log("KEYCODE[%s]=%i (%s)", char, vk_code, name)
        KEYCODES[name] = vk_code

KEYCODES.update({
    "Shift_L": win32con.VK_LSHIFT,
    "Shift_R": win32con.VK_RSHIFT,
    "Control_L": win32con.VK_LCONTROL,
    "Control_R": win32con.VK_RCONTROL,
    "Caps_Lock": win32con.VK_CAPITAL,
    "Num_Lock": win32con.VK_NUMLOCK,
    "Scroll_Lock": win32con.VK_SCROLL,
})