source: trunk/third/gtk/gdk/gdkinput.h @ 14482

Revision 14482, 4.7 KB checked in by ghudson, 24 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r14481, which included commits to RCS files with non-trunk default branches.
Line 
1/* GDK - The GIMP Drawing Kit
2 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 * Library General Public License for more details.
13 *
14 * You should have received a copy of the GNU Library General Public
15 * License along with this library; if not, write to the
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 * Boston, MA 02111-1307, USA.
18 */
19
20/*
21 * Modified by the GTK+ Team and others 1997-1999.  See the AUTHORS
22 * file for a list of people on the GTK+ Team.  See the ChangeLog
23 * files for a list of changes.  These files are distributed with
24 * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
25 */
26
27#ifndef __GDK_INPUT_H__
28#define __GDK_INPUT_H__
29
30#ifndef XINPUT_NONE
31#include <X11/extensions/XInput.h>
32#endif
33
34typedef struct _GdkAxisInfo    GdkAxisInfo;
35typedef struct _GdkInputVTable GdkInputVTable;
36typedef struct _GdkDevicePrivate GdkDevicePrivate;
37typedef struct _GdkInputWindow GdkInputWindow;
38
39struct _GdkInputVTable {
40  gint (*set_mode) (guint32 deviceid, GdkInputMode mode);
41  void (*set_axes) (guint32 deviceid, GdkAxisUse *axes);
42  void (*set_key)  (guint32 deviceid,
43                    guint   index,
44                    guint   keyval,
45                    GdkModifierType modifiers);
46       
47  GdkTimeCoord* (*motion_events) (GdkWindow *window,
48                                  guint32 deviceid,
49                                  guint32 start,
50                                  guint32 stop,
51                                  gint *nevents_return);
52  void (*get_pointer)   (GdkWindow       *window,
53                         guint32          deviceid,
54                         gdouble         *x,
55                         gdouble         *y,
56                         gdouble         *pressure,
57                         gdouble         *xtilt,
58                         gdouble         *ytilt,
59                         GdkModifierType *mask);
60  gint (*grab_pointer) (GdkWindow *     window,
61                        gint            owner_events,
62                        GdkEventMask    event_mask,
63                        GdkWindow *     confine_to,
64                        guint32         time);
65  void (*ungrab_pointer) (guint32 time);
66
67  void (*configure_event) (XConfigureEvent *xevent, GdkWindow *window);
68  void (*enter_event) (XCrossingEvent *xevent, GdkWindow *window);
69  gint (*other_event) (GdkEvent *event, XEvent *xevent, GdkWindow *window);
70  /* Handle an unidentified event. Returns TRUE if handled, FALSE
71     otherwise */
72  gint (*window_none_event) (GdkEvent *event, XEvent *xevent);
73  gint (*enable_window) (GdkWindow *window, GdkDevicePrivate *gdkdev);
74  gint (*disable_window) (GdkWindow *window, GdkDevicePrivate *gdkdev);
75};
76
77/* information about a device axis */
78struct _GdkAxisInfo
79{
80  /* reported x resolution */
81  gint xresolution;
82
83  /* reported x minimum/maximum values */
84  gint xmin_value, xmax_value;
85
86  /* calibrated resolution (for aspect ration) - only relative values
87     between axes used */
88  gint resolution;
89 
90  /* calibrated minimum/maximum values */
91  gint min_value, max_value;
92};
93
94#define GDK_INPUT_NUM_EVENTC 6
95
96struct _GdkDevicePrivate {
97  GdkDeviceInfo  info;
98
99#ifndef XINPUT_NONE
100  /* information about the axes */
101  GdkAxisInfo *axes;
102
103  /* reverse lookup on axis use type */
104  gint axis_for_use[GDK_AXIS_LAST];
105 
106  /* Information about XInput device */
107  XDevice       *xdevice;
108
109  /* minimum key code for device */
110  gint min_keycode;           
111
112  int buttonpress_type, buttonrelease_type, keypress_type,
113      keyrelease_type, motionnotify_type, proximityin_type,
114      proximityout_type, changenotify_type;
115
116  /* true if we need to select a different set of events, but
117     can't because this is the core pointer */
118  gint needs_update;
119
120  /* Mask of buttons (used for button grabs) */
121  gint button_state;
122
123  /* true if we've claimed the device as active. (used only for XINPUT_GXI) */
124  gint claimed;
125#endif /* !XINPUT_NONE */
126};
127
128struct _GdkInputWindow
129{
130  /* gdk window */
131  GdkWindow *window;
132
133  /* Extension mode (GDK_EXTENSION_EVENTS_ALL/CURSOR) */
134  GdkExtensionMode mode;
135
136  /* position relative to root window */
137  gint16 root_x;
138  gint16 root_y;
139
140  /* rectangles relative to window of windows obscuring this one */
141  GdkRectangle *obscuring;
142  gint num_obscuring;
143
144  /* Is there a pointer grab for this window ? */
145  gint grabbed;
146};
147
148/* Global data */
149
150extern GdkInputVTable gdk_input_vtable;
151/* information about network port and host for gxid daemon */
152extern gchar           *gdk_input_gxid_host;
153extern gint             gdk_input_gxid_port;
154extern gint             gdk_input_ignore_core;
155
156/* Function declarations */
157
158void gdk_input_window_destroy (GdkWindow *window);
159
160#endif /* __GDK_INPUT_H__ */
Note: See TracBrowser for help on using the repository browser.