[macOS] Move keyboard layout related code to base display server.

This commit is contained in:
Pāvels Nadtočajevs
2025-06-24 10:45:19 +03:00
parent 88b9932ce1
commit 350b1936ee
4 changed files with 175 additions and 167 deletions
@@ -44,11 +44,22 @@ class DisplayServerMacOSBase : public DisplayServer {
id tts = nullptr;
struct LayoutInfo {
String name;
String code;
};
mutable Vector<LayoutInfo> kbd_layouts;
mutable int current_layout = 0;
mutable bool keyboard_layout_dirty = true;
protected:
_THREAD_SAFE_CLASS_
void initialize_tts() const;
void _update_keyboard_layouts() const;
static void _keyboard_layout_changed(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef user_info);
public:
virtual void clipboard_set(const String &p_text) override;
virtual String clipboard_get() const override;
@@ -56,6 +67,15 @@ public:
virtual bool clipboard_has() const override;
virtual bool clipboard_has_image() const override;
virtual int keyboard_get_layout_count() const override;
virtual int keyboard_get_current_layout() const override;
virtual void keyboard_set_current_layout(int p_index) override;
virtual String keyboard_get_layout_language(int p_index) const override;
virtual String keyboard_get_layout_name(int p_index) const override;
virtual Key keyboard_get_keycode_from_physical(Key p_keycode) const override;
virtual Key keyboard_get_label_from_physical(Key p_keycode) const override;
virtual void show_emoji_and_symbol_picker() const override;
virtual bool tts_is_speaking() const override;
virtual bool tts_is_paused() const override;
virtual TypedArray<Dictionary> tts_get_voices() const override;
@@ -66,4 +86,5 @@ public:
virtual void tts_stop() override;
DisplayServerMacOSBase();
~DisplayServerMacOSBase();
};