private int on_key_event(cef_keyboard_handler_t* self, cef_browser_t* browser, cef_key_event_t* @event, IntPtr os_event) { CheckSelf(self); var m_browser = CefBrowser.FromNative(browser); var m_event = CefKeyEvent.FromNative(@event); // TODO: wrap cef_event_handle_t (os_event) IntPtr m_os_event = IntPtr.Zero; if (os_event != IntPtr.Zero) { } var result = OnKeyEvent(m_browser, m_event, m_os_event); return result ? 1 : 0; }
/// <summary> /// Send a key event to the browser. /// </summary> public void SendKeyEvent(CefKeyEvent keyEvent) { if (keyEvent == null) throw new ArgumentNullException("keyEvent"); var n_event = new cef_key_event_t(); keyEvent.ToNative(&n_event); cef_browser_host_t.send_key_event(_self, &n_event); }
internal unsafe void ToNative(cef_key_event_t* ptr) { if (ptr == null) throw new ArgumentNullException("ptr"); ptr->type = EventType; ptr->modifiers = Modifiers; ptr->windows_key_code = WindowsKeyCode; ptr->native_key_code = NativeKeyCode; ptr->is_system_key = IsSystemKey; ptr->character = Character; ptr->unmodified_character = UnmodifiedCharacter; ptr->focus_on_editable_field = FocusOnEditableField; }
public static void send_key_event(cef_browser_host_t* self, cef_key_event_t* @event) { send_key_event_delegate d; var p = self->_send_key_event; if (p == _p1a) { d = _d1a; } else { d = (send_key_event_delegate)Marshal.GetDelegateForFunctionPointer(p, typeof(send_key_event_delegate)); if (_p1a == IntPtr.Zero) { _d1a = d; _p1a = p; } } d(self, @event); }
internal static unsafe CefKeyEvent FromNative(cef_key_event_t* ptr) { if (ptr == null) throw new ArgumentNullException("ptr"); return new CefKeyEvent { EventType = ptr->type, Modifiers = ptr->modifiers, WindowsKeyCode = ptr->windows_key_code, NativeKeyCode = ptr->native_key_code, IsSystemKey = ptr->is_system_key, Character = (char)ptr->character, UnmodifiedCharacter = (char)ptr->unmodified_character, FocusOnEditableField = ptr->focus_on_editable_field, }; }