1 /* GDK - The GIMP Drawing Kit
2 * Copyright (C) 2000 Red Hat, Inc.
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser 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.
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 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser 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.
21 * Modified by the GTK+ Team and others 1997-2000. 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/.
29 #include "gdkprivate-broadway.h"
30 #include "gdkinternals.h"
31 #include "gdkdisplay-broadway.h"
32 #include "gdkkeysyms.h"
41 typedef struct _GdkKeymapBroadway GdkKeymapBroadway;
42 typedef struct _GdkKeymapClass GdkKeymapBroadwayClass;
44 #define GDK_TYPE_KEYMAP_BROADWAY (gdk_keymap_broadway_get_type ())
45 #define GDK_KEYMAP_BROADWAY(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_KEYMAP_BROADWAY, GdkKeymapBroadway))
46 #define GDK_IS_KEYMAP_BROADWAY(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_KEYMAP_BROADWAY))
48 typedef struct _DirectionCacheEntry DirectionCacheEntry;
50 struct _GdkKeymapBroadway
52 GdkKeymap parent_instance;
56 #define KEYMAP_USE_XKB(keymap) GDK_DISPLAY_BROADWAY ((keymap)->display)->use_xkb
57 #define KEYMAP_XDISPLAY(keymap) GDK_DISPLAY_XDISPLAY ((keymap)->display)
59 static GType gdk_keymap_broadway_get_type (void);
60 static void gdk_keymap_broadway_class_init (GdkKeymapBroadwayClass *klass);
61 static void gdk_keymap_broadway_init (GdkKeymapBroadway *keymap);
62 static void gdk_keymap_broadway_finalize (GObject *object);
64 static GdkKeymapClass *parent_class = NULL;
67 gdk_keymap_broadway_get_type (void)
69 static GType object_type = 0;
73 const GTypeInfo object_info =
75 sizeof (GdkKeymapClass),
77 (GBaseFinalizeFunc) NULL,
78 (GClassInitFunc) gdk_keymap_broadway_class_init,
79 NULL, /* class_finalize */
80 NULL, /* class_data */
81 sizeof (GdkKeymapBroadway),
83 (GInstanceInitFunc) gdk_keymap_broadway_init,
86 object_type = g_type_register_static (GDK_TYPE_KEYMAP,
87 g_intern_static_string ("GdkKeymapBroadway"),
95 gdk_keymap_broadway_class_init (GdkKeymapBroadwayClass *klass)
97 GObjectClass *object_class = G_OBJECT_CLASS (klass);
99 parent_class = g_type_class_peek_parent (klass);
101 object_class->finalize = gdk_keymap_broadway_finalize;
105 gdk_keymap_broadway_init (GdkKeymapBroadway *keymap)
110 gdk_keymap_broadway_finalize (GObject *object)
112 G_OBJECT_CLASS (parent_class)->finalize (object);
116 gdk_keymap_get_for_display (GdkDisplay *display)
118 GdkDisplayBroadway *display_broadway;
120 g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
121 display_broadway = GDK_DISPLAY_BROADWAY (display);
123 if (!display_broadway->keymap)
124 display_broadway->keymap = g_object_new (gdk_keymap_broadway_get_type (), NULL);
126 display_broadway->keymap->display = display;
128 return display_broadway->keymap;
132 gdk_keymap_get_direction (GdkKeymap *keymap)
134 return PANGO_DIRECTION_NEUTRAL;
138 gdk_keymap_have_bidi_layouts (GdkKeymap *keymap)
144 gdk_keymap_get_caps_lock_state (GdkKeymap *keymap)
150 gdk_keymap_get_num_lock_state (GdkKeymap *keymap)
156 gdk_keymap_get_entries_for_keyval (GdkKeymap *keymap,
166 gdk_keymap_get_entries_for_keycode (GdkKeymap *keymap,
167 guint hardware_keycode,
177 gdk_keymap_lookup_key (GdkKeymap *keymap,
178 const GdkKeymapKey *key)
185 gdk_keymap_translate_keyboard_state (GdkKeymap *keymap,
186 guint hardware_keycode,
187 GdkModifierType state,
190 gint *effective_group,
192 GdkModifierType *consumed_modifiers)
198 /* Key handling not part of the keymap */
200 gdk_keyval_name (guint keyval)
204 case GDK_KEY_Page_Up:
206 case GDK_KEY_Page_Down:
208 case GDK_KEY_KP_Page_Up:
210 case GDK_KEY_KP_Page_Down:
211 return "KP_Page_Down";
218 gdk_keyval_from_name (const gchar *keyval_name)
220 g_return_val_if_fail (keyval_name != NULL, 0);
226 gdk_keymap_add_virtual_modifiers (GdkKeymap *keymap,
227 GdkModifierType *state)
232 gdk_keymap_map_virtual_modifiers (GdkKeymap *keymap,
233 GdkModifierType *state)