diff --git a/Services/WindowServer/Event.h b/Services/WindowServer/Event.h index 417e9e55ec..453d42bef6 100644 --- a/Services/WindowServer/Event.h +++ b/Services/WindowServer/Event.h @@ -76,10 +76,10 @@ enum class MouseButton : u8 { class KeyEvent final : public Event { public: - KeyEvent(Type type, int key, char character, u8 modifiers, u32 scancode) + KeyEvent(Type type, int key, u32 code_point, u8 modifiers, u32 scancode) : Event(type) , m_key(key) - , m_character(character) + , m_code_point(code_point) , m_modifiers(modifiers) , m_scancode(scancode) { @@ -91,14 +91,14 @@ public: bool shift() const { return m_modifiers & Mod_Shift; } bool logo() const { return m_modifiers & Mod_Logo; } u8 modifiers() const { return m_modifiers; } - char character() const { return m_character; } + u32 code_point() const { return m_code_point; } u32 scancode() const { return m_scancode; } private: friend class EventLoop; friend class Screen; int m_key { 0 }; - char m_character { 0 }; + u32 m_code_point { 0 }; u8 m_modifiers { 0 }; u32 m_scancode { 0 }; }; diff --git a/Services/WindowServer/MenuManager.cpp b/Services/WindowServer/MenuManager.cpp index d720e1693e..9f1b7b8567 100644 --- a/Services/WindowServer/MenuManager.cpp +++ b/Services/WindowServer/MenuManager.cpp @@ -146,7 +146,7 @@ void MenuManager::event(Core::Event& event) if (m_current_menu && event.type() == Event::KeyDown && ((key_event.key() >= Key_A && key_event.key() <= Key_Z) || (key_event.key() >= Key_0 && key_event.key() <= Key_9))) { - m_current_search.append(key_event.character()); + m_current_search.append_codepoint(key_event.code_point()); m_search_timer->restart(s_search_timeout); for (int i = 0; i < m_current_menu->item_count(); ++i) { auto text = m_current_menu->item(i).text(); diff --git a/Services/WindowServer/Screen.cpp b/Services/WindowServer/Screen.cpp index 6aa1e05235..fb4a1b65fe 100644 --- a/Services/WindowServer/Screen.cpp +++ b/Services/WindowServer/Screen.cpp @@ -164,7 +164,7 @@ void Screen::on_receive_mouse_data(const MousePacket& packet) void Screen::on_receive_keyboard_data(::KeyEvent kernel_event) { m_modifiers = kernel_event.modifiers(); - auto message = make(kernel_event.is_press() ? Event::KeyDown : Event::KeyUp, kernel_event.key, kernel_event.character, kernel_event.modifiers(), kernel_event.scancode); + auto message = make(kernel_event.is_press() ? Event::KeyDown : Event::KeyUp, kernel_event.key, kernel_event.code_point, kernel_event.modifiers(), kernel_event.scancode); Core::EventLoop::current().post_event(WindowManager::the(), move(message)); } diff --git a/Services/WindowServer/Window.cpp b/Services/WindowServer/Window.cpp index adf4b9091f..e3f84d6f0d 100644 --- a/Services/WindowServer/Window.cpp +++ b/Services/WindowServer/Window.cpp @@ -302,7 +302,7 @@ void Window::event(Core::Event& event) case Event::KeyDown: m_client->post_message( Messages::WindowClient::KeyDown(m_window_id, - (u8) static_cast(event).character(), + (u32) static_cast(event).code_point(), (u32) static_cast(event).key(), static_cast(event).modifiers(), (u32) static_cast(event).scancode())); @@ -310,7 +310,7 @@ void Window::event(Core::Event& event) case Event::KeyUp: m_client->post_message( Messages::WindowClient::KeyUp(m_window_id, - (u8) static_cast(event).character(), + (u32) static_cast(event).code_point(), (u32) static_cast(event).key(), static_cast(event).modifiers(), (u32) static_cast(event).scancode())); diff --git a/Services/WindowServer/WindowClient.ipc b/Services/WindowServer/WindowClient.ipc index b75293ff72..ed0308c79c 100644 --- a/Services/WindowServer/WindowClient.ipc +++ b/Services/WindowServer/WindowClient.ipc @@ -8,8 +8,8 @@ endpoint WindowClient = 4 MouseWheel(i32 window_id, Gfx::IntPoint mouse_position, u32 button, u32 buttons, u32 modifiers, i32 wheel_delta) =| WindowEntered(i32 window_id) =| WindowLeft(i32 window_id) =| - KeyDown(i32 window_id, u8 character, u32 key, u32 modifiers, u32 scancode) =| - KeyUp(i32 window_id, u8 character, u32 key, u32 modifiers, u32 scancode) =| + KeyDown(i32 window_id, u32 code_point, u32 key, u32 modifiers, u32 scancode) =| + KeyUp(i32 window_id, u32 code_point, u32 key, u32 modifiers, u32 scancode) =| WindowActivated(i32 window_id) =| WindowDeactivated(i32 window_id) =| WindowStateChanged(i32 window_id, bool minimized, bool occluded) =|