summaryrefslogtreecommitdiff
path: root/itches
diff options
context:
space:
mode:
Diffstat (limited to 'itches')
-rw-r--r--itches/emacs/pgtk-shift-space.c80
1 files changed, 31 insertions, 49 deletions
diff --git a/itches/emacs/pgtk-shift-space.c b/itches/emacs/pgtk-shift-space.c
index dcfef21..b223098 100644
--- a/itches/emacs/pgtk-shift-space.c
+++ b/itches/emacs/pgtk-shift-space.c
@@ -2,78 +2,60 @@
#include <gtk/gtk.h>
-static gboolean show_key (
- GtkWidget *widget,
- GdkEventKey *event,
- gpointer data
-) {
- int mods[] = {GDK_SHIFT_MASK, GDK_CONTROL_MASK, GDK_MOD1_MASK};
- char* mods_names[] = {"shift", "control", "alt"};
- char mods_desc[64] = {'\0'};
-
- for (size_t i=0; i<sizeof(mods)/sizeof(mods[0]); i++)
- {
- if (! (event->state & mods[i]))
- continue;
-
- if (mods_desc[0])
- strcat(mods_desc, ":");
-
- strcat(mods_desc, mods_names[i]);
- }
- if (! mods_desc[0])
- strcpy(mods_desc, "∅");
-
- fprintf(stderr, "key pressed: '%d' (mods: %s)\n", event->keyval, mods_desc);
-
- if (gtk_im_context_filter_keypress ((GtkIMContext*)data, event))
- fprintf(stderr, "\t(handled by gtkim)\n");
-
- return TRUE;
+static gboolean
+show_key (GtkWidget *widget, GdkEventKey *event, gpointer data)
+{
+ const int mods[] = {GDK_SHIFT_MASK, GDK_CONTROL_MASK, GDK_MOD1_MASK};
+ char const * const mods_names[] = {"shift", "control", "alt"};
+
+ fprintf(stderr, "press:\t'%d'", event->keyval);
+
+ for (size_t i=0; i<sizeof(mods)/sizeof(mods[0]); i++)
+ if (event->state & mods[i])
+ fprintf(stderr, " +%s", mods_names[i]);
+
+ fprintf(stderr, "\n");
+
+ if (gtk_im_context_filter_keypress (data, event))
+ fprintf(stderr, "handled by gtkim\n");
+
+ fprintf(stderr, "\n");
+
+ return TRUE;
}
-static void show_commit (
- GtkIMContext *ctx,
- gchar *str,
- gpointer data
-) {
- fprintf(stderr, "\tcommitting: \"%s\"\n", str);
+static void
+show_commit (GtkIMContext *ctx, gchar *str, gpointer data)
+{
+ fprintf(stderr, "commit: \"%s\"\n", str);
}
static void
-activate (GtkApplication* app,
- gpointer user_data)
+activate (GtkApplication *app, gpointer user_data)
{
GtkWidget *window;
window = gtk_application_window_new (app);
- gtk_window_set_title (GTK_WINDOW (window), "Window");
+ gtk_window_set_title (GTK_WINDOW (window), "GTK key scratchpad");
gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);
gtk_widget_show_all (window);
GtkIMContext *im_context = gtk_im_context_simple_new();
- gtk_im_context_set_client_window(
- im_context, gtk_widget_get_window(window)
- );
+ gtk_im_context_set_client_window(im_context, gtk_widget_get_window(window));
gtk_widget_add_events (window, GDK_KEY_PRESS_MASK);
- g_signal_connect (
- G_OBJECT (window), "key_press_event", G_CALLBACK (show_key), im_context
- );
- g_signal_connect (
- im_context, "commit", G_CALLBACK (show_commit), NULL
- );
+ g_signal_connect (G_OBJECT (window), "key_press_event", G_CALLBACK (show_key), im_context);
+ g_signal_connect (im_context, "commit", G_CALLBACK (show_commit), NULL);
}
int
-main (int argc,
- char **argv)
+main (int argc, char **argv)
{
GtkApplication *app;
int status;
- app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE);
+ app = gtk_application_new ("org.gtk.key-scratchpad", G_APPLICATION_DEFAULT_FLAGS);
g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
status = g_application_run (G_APPLICATION (app), argc, argv);
g_object_unref (app);