static void clutter_device_manager_win32_constructed (GObject *gobject) { ClutterDeviceManager *manager = CLUTTER_DEVICE_MANAGER (gobject); ClutterDeviceManagerWin32 *manager_win32; ClutterInputDevice *device; device = g_object_new (CLUTTER_TYPE_INPUT_DEVICE, "id", 0, "name", "Core Pointer", "device-type", CLUTTER_POINTER_DEVICE, "device-mode", CLUTTER_INPUT_MODE_MASTER, "has-cursor", TRUE, "enabled", TRUE, NULL); CLUTTER_NOTE (BACKEND, "Added core pointer device"); _clutter_device_manager_add_device (manager, device); device = g_object_new (CLUTTER_TYPE_INPUT_DEVICE, "id", 1, "name", "Core Keyboard", "device-type", CLUTTER_KEYBOARD_DEVICE, "device-mode", CLUTTER_INPUT_MODE_MASTER, "enabled", TRUE, NULL); CLUTTER_NOTE (BACKEND, "Added core keyboard device"); _clutter_device_manager_add_device (manager, device); manager_win32 = CLUTTER_DEVICE_MANAGER_WIN32 (manager); _clutter_input_device_set_associated_device (manager_win32->core_pointer, manager_win32->core_keyboard); _clutter_input_device_set_associated_device (manager_win32->core_keyboard, manager_win32->core_pointer); }
ClutterSeatEvdev * clutter_seat_evdev_new (ClutterDeviceManagerEvdev *manager_evdev) { ClutterDeviceManager *manager = CLUTTER_DEVICE_MANAGER (manager_evdev); ClutterSeatEvdev *seat; ClutterInputDevice *device; ClutterStage *stage; ClutterKeymap *keymap; struct xkb_keymap *xkb_keymap; seat = g_new0 (ClutterSeatEvdev, 1); if (!seat) return NULL; seat->manager_evdev = manager_evdev; device = _clutter_input_device_evdev_new_virtual ( manager, seat, CLUTTER_POINTER_DEVICE, CLUTTER_INPUT_MODE_MASTER); stage = _clutter_device_manager_evdev_get_stage (manager_evdev); _clutter_input_device_set_stage (device, stage); seat->pointer_x = INITIAL_POINTER_X; seat->pointer_y = INITIAL_POINTER_Y; _clutter_input_device_set_coords (device, NULL, seat->pointer_x, seat->pointer_y, NULL); _clutter_device_manager_add_device (manager, device); seat->core_pointer = device; device = _clutter_input_device_evdev_new_virtual ( manager, seat, CLUTTER_KEYBOARD_DEVICE, CLUTTER_INPUT_MODE_MASTER); _clutter_input_device_set_stage (device, stage); _clutter_device_manager_add_device (manager, device); seat->core_keyboard = device; seat->repeat = TRUE; seat->repeat_delay = 250; /* ms */ seat->repeat_interval = 33; /* ms */ keymap = clutter_backend_get_keymap (clutter_get_default_backend ()); xkb_keymap = clutter_keymap_evdev_get_keyboard_map (CLUTTER_KEYMAP_EVDEV (keymap)); if (xkb_keymap) { seat->xkb = xkb_state_new (xkb_keymap); seat->caps_lock_led = xkb_keymap_led_get_index (xkb_keymap, XKB_LED_NAME_CAPS); seat->num_lock_led = xkb_keymap_led_get_index (xkb_keymap, XKB_LED_NAME_NUM); seat->scroll_lock_led = xkb_keymap_led_get_index (xkb_keymap, XKB_LED_NAME_SCROLL); } return seat; }
static void clutter_device_manager_set_property (GObject *gobject, guint prop_id, const GValue *value, GParamSpec *pspec) { ClutterDeviceManagerPrivate *priv = CLUTTER_DEVICE_MANAGER (gobject)->priv; switch (prop_id) { case PROP_BACKEND: priv->backend = g_value_get_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); } }
static void gdk_device_removed (GdkDeviceManager *gdk_manager, GdkDevice *device, ClutterDeviceManagerGdk *self) { ClutterInputDevice *clutter_device = g_object_get_data (G_OBJECT (device), "clutter-device"); if (clutter_device == NULL) return; self->device_cache = g_slist_remove (self->device_cache, clutter_device); g_object_unref (clutter_device); g_hash_table_remove (self->device_by_id, GINT_TO_POINTER (clutter_input_device_get_device_id (clutter_device))); _clutter_device_manager_remove_device (CLUTTER_DEVICE_MANAGER (self), clutter_device); }