Device

class Device(**properties: Any)

Superclasses: Object

The GdkDevice object represents an input device, such as a keyboard, a mouse, or a touchpad.

See the Seat documentation for more information about the various kinds of devices, and their relationships.

Methods

class Device
get_caps_lock_state() bool

Retrieves whether the Caps Lock modifier of the keyboard is locked.

This is only relevant for keyboard devices.

get_device_tool() DeviceTool | None

Retrieves the current tool for device.

get_direction() Direction

Returns the direction of effective layout of the keyboard.

This is only relevant for keyboard devices.

The direction of a layout is the direction of the majority of its symbols. See unichar_direction.

get_display() Display

Returns the GdkDisplay to which device pertains.

get_has_cursor() bool

Determines whether the pointer follows device motion.

This is not meaningful for keyboard devices, which don’t have a pointer.

get_modifier_state() ModifierType

Retrieves the current modifier state of the keyboard.

This is only relevant for keyboard devices.

get_name() str

The name of the device, suitable for showing in a user interface.

get_num_lock_state() bool

Retrieves whether the Num Lock modifier of the keyboard is locked.

This is only relevant for keyboard devices.

get_num_touches() int

Retrieves the number of touch points associated to device.

get_product_id() str | None

Returns the product ID of this device.

This ID is retrieved from the device, and does not change. See get_vendor_id for more information.

get_scroll_lock_state() bool

Retrieves whether the Scroll Lock modifier of the keyboard is locked.

This is only relevant for keyboard devices.

get_seat() Seat

Returns the GdkSeat the device belongs to.

get_source() InputSource

Determines the type of the device.

get_surface_at_position() tuple[Surface | None, float, float]

Obtains the surface underneath device, returning the location of the device in win_x and win_y.

Returns None if the surface tree under device is not known to GDK (for example, belongs to another application).

get_timestamp() int

Returns the timestamp of the last activity for this device.

In practice, this means the timestamp of the last event that was received from the OS for this device. (GTK may occasionally produce events for a device that are not received from the OS, and will not update the timestamp).

Added in version 4.2.

get_vendor_id() str | None

Returns the vendor ID of this device.

This ID is retrieved from the device, and does not change.

This function, together with get_product_id, can be used to eg. compose GSettings paths to store settings for this device.

static GSettings *
get_device_settings (GdkDevice *device)
{
  const char *vendor, *product;
  GSettings *settings;
  GdkDevice *device;
  char *path;

  vendor = gdk_device_get_vendor_id (device);
  product = gdk_device_get_product_id (device);

  path = g_strdup_printf ("/org/example/app/devices/``%s``:``%s``/", vendor, product);
  settings = g_settings_new_with_path (DEVICE_SCHEMA, path);
  g_free (path);

  return settings;
}
has_bidi_layouts() bool

Determines if layouts for both right-to-left and left-to-right languages are in use on the keyboard.

This is only relevant for keyboard devices.

Properties

class Device
props.caps_lock_state: bool

Whether Caps Lock is on.

This is only relevant for keyboard devices.

props.direction: Direction

The direction of the current layout.

This is only relevant for keyboard devices.

props.display: Display

The GdkDisplay the GdkDevice pertains to.

props.has_bidi_layouts: bool

Whether the device has both right-to-left and left-to-right layouts.

This is only relevant for keyboard devices.

props.has_cursor: bool

Whether the device is represented by a cursor on the screen.

props.modifier_state: ModifierType

The current modifier state of the device.

This is only relevant for keyboard devices.

props.n_axes: int

Number of axes in the device.

props.name: str

The device name.

props.num_lock_state: bool

Whether Num Lock is on.

This is only relevant for keyboard devices.

props.num_touches: int

The maximal number of concurrent touches on a touch device.

Will be 0 if the device is not a touch device or if the number of touches is unknown.

props.product_id: str

Product ID of this device.

See get_product_id.

props.scroll_lock_state: bool

Whether Scroll Lock is on.

This is only relevant for keyboard devices.

props.seat: Seat

GdkSeat of this device.

props.source: InputSource

Source type for the device.

props.tool: DeviceTool

The GdkDeviceTool that is currently used with this device.

props.vendor_id: str

Vendor ID of this device.

See get_vendor_id.

Signals

class Device.signals
changed() None

Emitted either when the number of either axes or keys changes.

On X11 this will normally happen when the physical device routing events through the logical device changes (for example, user switches from the USB mouse to a tablet); in that case the logical device will change to reflect the axes and keys on the new physical device.

tool_changed(tool: DeviceTool) None

Emitted on pen/eraser devices whenever tools enter or leave proximity.

Parameters:

tool – The new current tool