#endif /* __cplusplus */
typedef struct _GdkDeviceKey GdkDeviceKey;
-typedef struct _GdkDeviceInfo GdkDeviceInfo;
+typedef struct _GdkDeviceAxis GdkDeviceAxis;
+typedef struct _GdkDevice GdkDevice;
typedef struct _GdkTimeCoord GdkTimeCoord;
typedef enum
GDK_AXIS_PRESSURE,
GDK_AXIS_XTILT,
GDK_AXIS_YTILT,
+ GDK_AXIS_WHEEL,
GDK_AXIS_LAST
} GdkAxisUse;
-struct _GdkDeviceInfo
+struct _GdkDeviceKey
+{
+ guint keyval;
+ GdkModifierType modifiers;
+};
+
+struct _GdkDeviceAxis
+{
+ GdkAxisUse use;
+ gdouble min;
+ gdouble max;
+};
+
+struct _GdkDevice
{
- guint32 deviceid;
+ /* All fields are read-only */
+
gchar *name;
GdkInputSource source;
GdkInputMode mode;
- gint has_cursor; /* TRUE if the X pointer follows device motion */
+ gboolean has_cursor; /* TRUE if the X pointer follows device motion */
+
gint num_axes;
- GdkAxisUse *axes; /* Specifies use for each axis */
+ GdkDeviceAxis *axes;
+
gint num_keys;
GdkDeviceKey *keys;
};
-struct _GdkDeviceKey
-{
- guint keyval;
- GdkModifierType modifiers;
-};
+/* We don't allocate each coordinate this big, but we use it to
+ * be ANSI compliant and avoid accessing past the defined limits.
+ */
+#define GDK_MAX_TIMECOORD_AXES 128
struct _GdkTimeCoord
{
guint32 time;
- gdouble x;
- gdouble y;
- gdouble pressure;
- gdouble xtilt;
- gdouble ytilt;
+ gdouble axes[GDK_MAX_TIMECOORD_AXES];
};
-GList * gdk_input_list_devices (void);
-void gdk_input_set_extension_events (GdkWindow *window,
- gint mask,
- GdkExtensionMode mode);
-void gdk_input_set_source (guint32 deviceid,
- GdkInputSource source);
-gboolean gdk_input_set_mode (guint32 deviceid,
- GdkInputMode mode);
-void gdk_input_set_axes (guint32 deviceid,
- GdkAxisUse *axes);
-void gdk_input_set_key (guint32 deviceid,
- guint index,
- guint keyval,
- GdkModifierType modifiers);
-void gdk_input_window_get_pointer (GdkWindow *window,
- guint32 deviceid,
- gdouble *x,
- gdouble *y,
- gdouble *pressure,
- gdouble *xtilt,
- gdouble *ytilt,
- GdkModifierType *mask);
-GdkTimeCoord *gdk_input_motion_events (GdkWindow *window,
- guint32 deviceid,
- guint32 start,
- guint32 stop,
- gint *nevents_return);
+/* Returns a list of GdkDevice * */
+GList * gdk_devices_list (void);
+
+/* Functions to configure a device */
+void gdk_device_set_source (GdkDevice *device,
+ GdkInputSource source);
+
+gboolean gdk_device_set_mode (GdkDevice *device,
+ GdkInputMode mode);
+
+void gdk_device_set_key (GdkDevice *device,
+ guint index,
+ guint keyval,
+ GdkModifierType modifiers);
+
+void gdk_device_set_axis_use (GdkDevice *device,
+ guint index,
+ GdkAxisUse use);
+void gdk_device_get_state (GdkDevice *device,
+ GdkWindow *window,
+ gdouble *axes,
+ GdkModifierType *mask);
+gboolean gdk_device_get_history (GdkDevice *device,
+ GdkWindow *window,
+ guint32 start,
+ guint32 stop,
+ GdkTimeCoord ***events,
+ gint *n_events);
+void gdk_device_free_history (GdkTimeCoord **events,
+ gint n_events);
+gboolean gdk_device_get_axis (GdkDevice *device,
+ gdouble *axes,
+ GdkAxisUse use,
+ gdouble *value);
+
+void gdk_input_set_extension_events (GdkWindow *window,
+ gint mask,
+ GdkExtensionMode mode);
+extern GdkDevice *gdk_core_pointer;
+
#ifdef __cplusplus
}
#endif /* __cplusplus */