[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/2php/cefpython/cefpython31/cefpython/keyboard_handler_cef3.pyx [Back]  [Original]

# Copyright (c) 2012-2014 The CEF Python authors. All rights reserved.
# License: New BSD License.
# Website: http://code.google.com/p/cefpython/

# cef_key_event_type_t
KEYEVENT_RAWKEYDOWN = cef_types.KEYEVENT_RAWKEYDOWN
KEYEVENT_KEYDOWN = cef_types.KEYEVENT_KEYDOWN
KEYEVENT_KEYUP = cef_types.KEYEVENT_KEYUP
KEYEVENT_CHAR = cef_types.KEYEVENT_CHAR

# cef_event_flags_t
EVENTFLAG_NONE = cef_types.EVENTFLAG_NONE
EVENTFLAG_CAPS_LOCK_ON = cef_types.EVENTFLAG_CAPS_LOCK_ON
EVENTFLAG_SHIFT_DOWN = cef_types.EVENTFLAG_SHIFT_DOWN
EVENTFLAG_CONTROL_DOWN = cef_types.EVENTFLAG_CONTROL_DOWN
EVENTFLAG_ALT_DOWN = cef_types.EVENTFLAG_ALT_DOWN
EVENTFLAG_LEFT_MOUSE_BUTTON = cef_types.EVENTFLAG_LEFT_MOUSE_BUTTON
EVENTFLAG_MIDDLE_MOUSE_BUTTON = cef_types.EVENTFLAG_MIDDLE_MOUSE_BUTTON
EVENTFLAG_RIGHT_MOUSE_BUTTON = cef_types.EVENTFLAG_RIGHT_MOUSE_BUTTON
# Mac OS-X command key.
EVENTFLAG_COMMAND_DOWN = cef_types.EVENTFLAG_COMMAND_DOWN
EVENTFLAG_NUM_LOCK_ON = cef_types.EVENTFLAG_NUM_LOCK_ON
EVENTFLAG_IS_KEY_PAD = cef_types.EVENTFLAG_IS_KEY_PAD
EVENTFLAG_IS_LEFT = cef_types.EVENTFLAG_IS_LEFT
EVENTFLAG_IS_RIGHT = cef_types.EVENTFLAG_IS_RIGHT

cdef dict CefToPyKeyEvent(const cef_types.CefKeyEvent& cefKeyEvent):
    pyKeyEvent = {
        "type": cefKeyEvent.type,
        "modifiers": cefKeyEvent.modifiers,
        "windows_key_code": cefKeyEvent.windows_key_code,
        "native_key_code": cefKeyEvent.native_key_code,
        "is_system_key": cefKeyEvent.is_system_key,
        "character": cefKeyEvent.character,
        "unmodified_character": cefKeyEvent.unmodified_character,
        "focus_on_editable_field": cefKeyEvent.focus_on_editable_field
    }
    return pyKeyEvent

cdef public cpp_bool KeyboardHandler_OnPreKeyEvent(
        CefRefPtr[CefBrowser] cefBrowser,
        const cef_types.CefKeyEvent& cefEvent,
        cef_types.CefEventHandle cefEventHandle,
        cpp_bool* cefIsKeyboardShortcut
        ) except * with gil:
    cdef PyBrowser pyBrowser
    cdef dict pyEvent
    cdef list pyIsKeyboardShortcutOut
    cdef py_bool returnValue
    cdef object callback
    try:
        pyBrowser = GetPyBrowser(cefBrowser)
        pyEvent = CefToPyKeyEvent(cefEvent)
        pyIsKeyboardShortcutOut = [cefIsKeyboardShortcut[0]]
        callback = pyBrowser.GetClientCallback("OnPreKeyEvent")
        if callback:
            returnValue = callback(pyBrowser, pyEvent, 
                    PyLong_FromVoidPtr(cefEventHandle),
                    pyIsKeyboardShortcutOut)
            cefIsKeyboardShortcut[0] = \
                    bool(pyIsKeyboardShortcutOut[0])
            return bool(returnValue)
        return False
    except:
        (exc_type, exc_value, exc_trace) = sys.exc_info()
        sys.excepthook(exc_type, exc_value, exc_trace)

cdef public cpp_bool KeyboardHandler_OnKeyEvent(
        CefRefPtr[CefBrowser] cefBrowser,
        const cef_types.CefKeyEvent& cefEvent,
        cef_types.CefEventHandle cefEventHandle
        ) except * with gil:
    cdef PyBrowser pyBrowser
    cdef dict pyEvent
    cdef py_bool returnValue
    cdef object callback
    try:
        pyBrowser = GetPyBrowser(cefBrowser)
        pyEvent = CefToPyKeyEvent(cefEvent)
        callback = pyBrowser.GetClientCallback("OnKeyEvent")
        if callback:
            returnValue = callback(pyBrowser, pyEvent,
                    PyLong_FromVoidPtr(cefEventHandle))
            return bool(returnValue)
        return False
    except:
        (exc_type, exc_value, exc_trace) = sys.exc_info()
        sys.excepthook(exc_type, exc_value, exc_trace)

Web Proxy Viewer  |  New URL  |  Original Page