mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-20 10:20:09 +00:00
1bbf2ac7ee
Fri Sep 7 11:51:44 2001 Owen Taylor <otaylor@redhat.com> Make gdkx.h the only installed header from gdk/x11. All structures in gdk/x11 are opaque. * gdk/x11/Makefile.am gdk/x11/gdkx.h gdk/x11/gdkprivate-x11.h: Don't install gdk{drawable,pixmap,window}-x11.h. * gdk/x11/{gdkcolormap-x11.c, gdkfont-x11.c, gdkx.h, gdkvisual-x11.c: Move GdkColormapPrivateX11, GdkFontPrivateX GdkImagePrivateX11, GdkVisualClass into C files. * gdk/gdkpixmap-x11.[ch]: Make gdk_pixmap_impl_get_type() static. * gdk/x11/{gdkcolor-x11.c, gdkcursor-x11.c, gdkdrawable-x11.c, gdkfont-x11.c, gdkgc-x11.c, gdkx.h, gdkimage-x11,gdkvisual-x11.c} Add public functions to replace previously exported direct structure access. gdk_x11_colormap_get_{xdisplay,xcolormap} gdk_x11_cursor_get_{xdisplay,xcursor}, gdk_x11_drawable_get_{xdisplay,xcursor,gdk_x11_visual_get_xvisual, gdk_x11_font_get_{xdisplay,xfont}, gdk_x11_image_get_{xdisplay,ximage}, gdk_x11_gc_get_{xdisplay,ximage} * gdk/gdkprivate.h gdk/gdkinternals.h: Move GdkColorInfo, GdkEventFilter, GdkClientFilter, GdkFontPrivate to gdkinternals. Fix a number of variables and functions that were exported "accidentally" from GDK. * gdk/**.[ch]: gdk => _gdk for gdk_visual_init, gdk_events_init, gdk_input_init, gdk_dnd_init, gdk_image_exit, gdk_input_exit, gdk_windowing_exit, gdk_event_func, gdk_event_data, gdk_event_notify, gdk_queued_events, gdk_queued_tail, gdk_event_new, gdk_events_queue, gdk_events_unqueue, gdk_event_queue_find_first, gdk_event_queue_remove_link, gdk_event_queue_append, gdk_event_button_generate, gdk_debug_flags, gdk_default_filters, gdk_parent_root. * gdk/x11/{gdkevents-x11.c, gdkglobals-x11.c, gdkimage-x11.c, gdkmain-x11.c, gdkprivate-x11.h, gdk/x11/gdkwindow-x11.c}: gdk => _gdk for gdk_event_mask_table, gkd_nevent_masks, gdk_wm_window_protocols, gdk_leader_window, gdk_xgrab_window, gdk_use_xshm, gdk_input_ignore_core. * gdk/x11/xsettings-common.h (xsettings_list_insert): Add #defines to namespace functions into the private _gdk_ namespace. * gdk/gdkwindow.[ch] gdk/x11/gdkx.h: Add gdk_get_default_root_window () to replace gdk_parent_root exported variable. Adjust and deprecate GDK_ROOT_PARENT(). * demos/{testpixbuf-drawable.c,testpixbuf-save.c}: Fix GDK_ROOT_PARENT usage, remove includes of port-specific headers. * gdk/{win32,x11,fb}/gdkinput*.[ch]: s/gdk/_gdk/ for _gdk_input_gxid_host, _gdk_input_gxid_port, _gdk_input_ignore_core, gdk_input_devices, _gdk_input_windows, gdk_init_input_core. * gdk/x11/{gdkevents-x11.,c gdkglobals-x11.c, gdkmain-x11.c} docs/Changes-2.0.txt: Remove gdk_wm_protocols, gdk_wm_delete_window functions, gdk_wm_take_focus, use gdk_atom_intern() instead. * gdk/linux-fb/{gdkselection-fb.c, gdkmain-fb.c, gdkprivatefb.h} gdk/win32/{gdkselection-win32.c, gdkmgdkwin32.h, gdkprivate-win32.h} gdk/x11/{gdkselection-x11.c gdkx.h, gtkprivate-x11.h} gtk/gtkselection.c Unexport gdk_selection_property, just use gdk_atom_intern ("GDK_SELECTION"). * gdk/x11/{gdkprivate-x11.h,gdkdrawable-x11h,gdkgc-x11.c,gdkx.h}: Unexport gdk_drawable_impl_x11_get_type, gdk_gc_x11_get_type, GDK_GC_X11 cast macros, GdkGCX11 structures, GdkCursorPrivate, GdkVisualprivate, gdk_x11_gc_flush. Make a number of public exports of variables into functions to increase encapsulation. * gdk/gdkinternals.h gdk/gdkinput.h gdk/gdkevents.h gdk/linux-fb/gdkmouse-fb.c: gdk_core_pointer => _gdk_core_pointer, move to gdkinternals.h. Add gdk_device_get_core_pointer (). * gdk/gdkprivate.h gdk/gdkpango.c gdk/gdkinternals.h docs/Changes-2.0.txt: Unexport gdk_parent_root, gdk_error_code, gdk_error_warnings. * gdk/x11/{gdkcolormap-x11.c, gdkmain-x11.c, gdkx.h} docs/Changes-2.0.txt: s/gdk_screen/_gdk_screen/, add gdk_x11_get_default_screen() s/gdk_root_window/_gdk_root_window/, add gdk_x11_get_default_root_xwindow() Add gdk_x11_get_default_xdisplay(). * gdk/gdk.h gdk/gdk.c linux-fb/gdkfb.h linux-fb/gdkglobals-fb.c win32/gdkwin32.h x11/gdkglobals-x11.c gdk/x11/gdkmain-x11.c gdk/x11/gdkx.h: gdk/gdk.def: Add gdk_get/set_program_class, Don't export gdk_progclass, move --class command line option and handling to common portion of GDK. Miscellaneous fixes: * gdk/x11/gdkwindow-x11.c (gdk_window_set_icon_list): Fix g_return_val_if_fail that should have been g_return_if_fail. * gdk/gdkinternals.h gdk/gdkprivate.h: Move gdk_synthesize_window_state() to the semi-public gdkprivate.h. * gtk/gtkdnd.c (_gtk_drag_source_handle_event): Remove uneeded X11 dependency. * gdk/linux-fb/gdkmain-fb.c gdk/win32/gdkmain-win32.c gdk/TODO: Remove unused gdk_key_repeat_disable/restore. * linux-fb/gdkglobals-fb.c win32/gdkglobals-win32.c x11/gdkglobals-x11.c x11/gdkprivate-x11.h gdk/gdk.def: Remove unused gdk_null_window_warnings variable. * gdk/Makefile.am (DIST_SUBDIRS) nanox/*: cvs remove nanox; it can be retrieved from the repository; it is too far from functional to be worth having people check out; it would be easier to start from scratch, I suspect. * gdk/x11/gdkpixmap-x11.c: Fix lvalue usage of GDK_PIXMAP_XID(). * gdk/x11/gdkkeys-x11.c gdk/gdkrgb.c gdk/gdkwindow.c gdk/x11/gdkpango-x11.c gdk/x11/gdkselection-x11.c: Fix some accidentally global variables and unused global variables. * gdk/x11/gdkkeys-x11.c gdk/gdkrgb.c gdk/gdkwindow.c gdk/x11/gdkpango-x11.c gdk/x11/gdkselection-x11.c: Fix some accidentally global variables and unused global variables. Add some space for future expansion to multihead. * gdk/gdkdrawable.h: Add four reserved function pointers for future expansion of GdkDrawableClass. * gtk/gtkwindow.h gtk/gtkinvisible.h: Add reserved pointer where we can put a GdkScreen * later.
296 lines
8.1 KiB
Plaintext
296 lines
8.1 KiB
Plaintext
<!-- ##### SECTION Title ##### -->
|
|
Input Devices
|
|
|
|
<!-- ##### SECTION Short_Description ##### -->
|
|
Functions for handling extended input devices.
|
|
|
|
<!-- ##### SECTION Long_Description ##### -->
|
|
<para>
|
|
In addition to the normal keyboard and mouse input devices, GTK+ also
|
|
contains support for <firstterm>extended input devices</firstterm>. In
|
|
particular, this support is targeted at graphics tablets. Graphics
|
|
tablets typically return sub-pixel positioning information and possibly
|
|
information about the pressure and tilt of the stylus. Under
|
|
X, the support for extended devices is done through the
|
|
<firstterm>XInput</firstterm> extension.
|
|
</para>
|
|
<para>
|
|
Because handling extended input devices may involve considerable
|
|
overhead, they need to be turned on for each #GdkWindow
|
|
individually using gdk_input_set_extension_events().
|
|
(Or, more typically, for GtkWidgets, using gtk_widget_set_extension_events()).
|
|
As an additional complication, depending on the support from
|
|
the windowing system, its possible that a normal mouse
|
|
cursor will not be displayed for a particular extension
|
|
device. If an application does not want to deal with displaying
|
|
a cursor itself, it can ask only to get extension events
|
|
from devices that will display a cursor, by passing the
|
|
%GDK_EXTENSION_EVENTS_CURSOR value to
|
|
gdk_input_set_extension_events(). Otherwise, the application
|
|
must retrieve the device information using gdk_input_list_devices(),
|
|
check the <structfield>has_cursor</structfield> field, and,
|
|
if it is %FALSE, draw a cursor itself when it receives
|
|
motion events.
|
|
</para>
|
|
<para>
|
|
Each pointing device is assigned a unique integer ID; events from a
|
|
particular device can be identified by the
|
|
<structfield>deviceid</structfield> field in the event structure. The
|
|
events generated by pointer devices have also been extended to contain
|
|
<structfield>pressure</structfield>, <structfield>xtilt</structfield>
|
|
and <structfield>ytilt</structfield> fields which contain the extended
|
|
information reported as additional <firstterm>valuators</firstterm>
|
|
from the device. The <structfield>pressure</structfield> field is a
|
|
a double value ranging from 0.0 to 1.0, while the tilt fields are
|
|
double values ranging from -1.0 to 1.0. (With -1.0 representing the
|
|
maximum title to the left or up, and 1.0 representing the maximum
|
|
tilt to the right or down.)
|
|
</para>
|
|
<para>
|
|
One additional field in each event is the
|
|
<structfield>source</structfield> field, which contains an
|
|
enumeration value describing the type of device; this currently
|
|
can be one of
|
|
%GDK_SOURCE_MOUSE,
|
|
%GDK_SOURCE_PEN,
|
|
%GDK_SOURCE_ERASER,
|
|
or %GDK_SOURCE_CURSOR. This field is present to allow simple
|
|
applications to (for instance) delete when they detect eraser
|
|
devices without having to keep track of complicated per-device
|
|
settings.
|
|
</para>
|
|
<para>
|
|
Various aspects of each device may be configured. The easiest way of
|
|
creating a GUI to allow the user to conifigure such a device
|
|
is to use to use the #GtkInputDialog widget in GTK+.
|
|
However, even when using this widget, application writers
|
|
will need to directly query and set the configuration parameters
|
|
in order to save the state between invocations of the application.
|
|
The configuration of devices is queried using gdk_input_list_devices.
|
|
Each device must is activated using gdk_input_set_mode(), which
|
|
also controls whether the device's range is mapped to the
|
|
entire screen or to a single window. The mapping of the valuators of
|
|
the device onto the predefined valuator types is set using
|
|
gdk_input_set_axes. And the source type for each device
|
|
can be set with gdk_input_set_source().
|
|
</para>
|
|
<para>
|
|
Devices may also have associated <firstterm>keys</firstterm>
|
|
or macro buttons. Such keys can be globally set to map
|
|
into normal X keyboard events. The mapping is set using
|
|
gdk_input_set_key().
|
|
</para>
|
|
<para>
|
|
The interfaces in this section will most likely be considerably
|
|
modified in the future to accomodate devices that may have different
|
|
sets of additional valuators than the pressure xtilt and ytilt.
|
|
</para>
|
|
|
|
<!-- ##### SECTION See_Also ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
<!-- ##### STRUCT GdkDevice ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@parent_instance:
|
|
@name:
|
|
@source:
|
|
@mode:
|
|
@has_cursor:
|
|
@num_axes:
|
|
@axes:
|
|
@num_keys:
|
|
@keys:
|
|
|
|
<!-- ##### ENUM GdkInputSource ##### -->
|
|
<para>
|
|
An enumeration describing the type of an input device
|
|
in general terms.
|
|
</para>
|
|
|
|
@GDK_SOURCE_MOUSE: the device is a mouse. (This will be reported for the core
|
|
pointer, even if it is something else, such as a trackball.)
|
|
@GDK_SOURCE_PEN: the device is a stylus of a graphics tablet or similar device.
|
|
@GDK_SOURCE_ERASER: the device is an eraser. Typically, this would be the other end
|
|
of a stylus on a graphics tablet.
|
|
@GDK_SOURCE_CURSOR: the device is a graphics tablet "puck" or similar device.
|
|
|
|
<!-- ##### ENUM GdkInputMode ##### -->
|
|
<para>
|
|
An enumeration that describes the mode of an input device.
|
|
</para>
|
|
|
|
@GDK_MODE_DISABLED: the device is disabled and will not report any events.
|
|
@GDK_MODE_SCREEN: the device is enabled. The device's coordinate space
|
|
maps to the entire screen.
|
|
@GDK_MODE_WINDOW: the device is enabled. The device's coordinate space
|
|
is mapped to a single window. The manner in which this window
|
|
is chosen is undefined, but it will typically be the same
|
|
way in which the focus window for key events is determined.
|
|
|
|
<!-- ##### STRUCT GdkDeviceKey ##### -->
|
|
<para>
|
|
The #GdkDeviceKey structure contains information
|
|
about the mapping of one device macro button onto
|
|
a normal X key event. It has the following fields:
|
|
</para>
|
|
|
|
@keyval: the keyval to generate when the macro button is pressed.
|
|
If this is 0, no keypress will be generated.
|
|
@modifiers: the modifiers set for the generated key event.
|
|
|
|
<!-- ##### STRUCT GdkDeviceAxis ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@use:
|
|
@min:
|
|
@max:
|
|
|
|
<!-- ##### ENUM GdkAxisUse ##### -->
|
|
<para>
|
|
An enumeration describing the way in which a device
|
|
axis (valuator) maps onto the predefined valuator
|
|
types that GTK+ understands.
|
|
</para>
|
|
|
|
@GDK_AXIS_IGNORE: the axis is ignored.
|
|
@GDK_AXIS_X: the axis is used as the x axis.
|
|
@GDK_AXIS_Y: the axis is used as the y axis.
|
|
@GDK_AXIS_PRESSURE: the axis is used for pressure information.
|
|
@GDK_AXIS_XTILT: the axis is used for x tilt information.
|
|
@GDK_AXIS_YTILT: the axis is used for x tilt information.
|
|
@GDK_AXIS_WHEEL:
|
|
@GDK_AXIS_LAST: a constant equal to the numerically highest axis value.
|
|
|
|
<!-- ##### FUNCTION gdk_devices_list ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION gdk_device_set_source ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@device:
|
|
@source:
|
|
|
|
|
|
<!-- ##### FUNCTION gdk_device_set_mode ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@device:
|
|
@mode:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION gdk_device_set_key ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@device:
|
|
@index:
|
|
@keyval:
|
|
@modifiers:
|
|
|
|
|
|
<!-- ##### FUNCTION gdk_device_set_axis_use ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@device:
|
|
@index:
|
|
@use:
|
|
|
|
|
|
<!-- ##### FUNCTION gdk_device_get_state ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@device:
|
|
@window:
|
|
@axes:
|
|
@mask:
|
|
|
|
|
|
<!-- ##### FUNCTION gdk_device_get_history ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@device:
|
|
@window:
|
|
@start:
|
|
@stop:
|
|
@events:
|
|
@n_events:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION gdk_device_free_history ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@events:
|
|
@n_events:
|
|
|
|
|
|
<!-- ##### STRUCT GdkTimeCoord ##### -->
|
|
<para>
|
|
The #GdkTimeCoord structure stores a single event in a
|
|
motion history. It contains the following fields:
|
|
</para>
|
|
|
|
@time: The timestamp for this event.
|
|
@axes:
|
|
|
|
<!-- ##### FUNCTION gdk_device_get_axis ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@device:
|
|
@axes:
|
|
@use:
|
|
@value:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION gdk_input_set_extension_events ##### -->
|
|
<para>
|
|
Turns extension events on or off for a particular window,
|
|
and specifies the event mask for extension events.
|
|
</para>
|
|
|
|
@window: a #GdkWindow.
|
|
@mask: the event mask
|
|
@mode: the type of extension events that are desired.
|
|
|
|
|
|
<!-- ##### ENUM GdkExtensionMode ##### -->
|
|
<para>
|
|
An enumeration used to specify which extension events
|
|
are desired for a particular widget.
|
|
</para>
|
|
|
|
@GDK_EXTENSION_EVENTS_NONE: no extension events are desired.
|
|
@GDK_EXTENSION_EVENTS_ALL: all extension events are desired.
|
|
@GDK_EXTENSION_EVENTS_CURSOR: extension events are desired only if a cursor
|
|
will be displayed for the device.
|
|
|