#include static void PrintKeymapForCode(GdkKeymap *keymap, guint keycode) { GdkKeymapKey *maps; guint *keyvals; gint count; if (!gdk_keymap_get_entries_for_keycode(keymap, keycode, &maps, &keyvals, &count)) return; for (int i = 0; i < count; i++) { if (maps[i].level > 0 || maps[i].group > 1) continue; printf(" i=%d, keycode=%d, keyval=%d (%c), level=%d, group=%d\n", i, maps[i].keycode, keyvals[i], keyvals[i], maps[i].level, maps[i].group); } g_free(keyvals); g_free(maps); } int main(gint argc, gchar **argv) { gdk_init(&argc, &argv); GdkDisplay *display = gdk_display_get_default(); if (!display) { printf("ERROR: can't get display\n"); return 1; } GdkKeymap *keymap = gdk_keymap_get_for_display(display); if (!keymap) { printf("ERROR: Can't get keymap\n"); gdk_display_close(display); return 2; } for (int keycode = 10; keycode <= 61; keycode++) { printf("-------------------\n"); printf("Keycode %d:\n", keycode); PrintKeymapForCode(keymap, keycode); } gdk_display_close(display); return 0; }