spiegel-keyman/linux/mcompile/keymap/main.cpp

47 lines
1.1 KiB
C++

#include <gdk/gdk.h>
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;
}