backend: Add API to get layout group

Add API to get the layout group (layout index) currently active. In the
native backend this is done by fetching the state directly from the
evdev backend; on X11 this works by listening for XkbStateNotify
events, caching the layout group value.

https://bugzilla.gnome.org/show_bug.cgi?id=786408
This commit is contained in:
Jonas Ådahl
2017-08-17 17:01:50 +08:00
parent 5685449e15
commit 33f1706634
4 changed files with 58 additions and 1 deletions

View File

@@ -507,6 +507,14 @@ meta_backend_native_get_keymap (MetaBackend *backend)
return clutter_evdev_get_keyboard_map (manager);
}
static xkb_layout_index_t
meta_backend_native_get_keymap_layout_group (MetaBackend *backend)
{
ClutterDeviceManager *manager = clutter_device_manager_get_default ();
return clutter_evdev_get_keyboard_layout_index (manager);
}
static void
meta_backend_native_lock_layout_group (MetaBackend *backend,
guint idx)
@@ -579,6 +587,7 @@ meta_backend_native_class_init (MetaBackendNativeClass *klass)
backend_class->set_keymap = meta_backend_native_set_keymap;
backend_class->get_keymap = meta_backend_native_get_keymap;
backend_class->get_keymap_layout_group = meta_backend_native_get_keymap_layout_group;
backend_class->lock_layout_group = meta_backend_native_lock_layout_group;
backend_class->get_relative_motion_deltas = meta_backend_native_get_relative_motion_deltas;
backend_class->update_screen_size = meta_backend_native_update_screen_size;