#include GtkWidget *window; GtkWidget *vbox; GtkWidget *button; GtkWidget *label; GtkWidget *label2; unsigned char button_str[30] = {50,195,160,195,161}; unsigned char caption[30]=""; int i = 0; int j = 0; GDateTime *LastPressed = NULL; void button_clicked(GtkWidget *widget, gpointer data) { GTimeSpan diff; GDateTime *now = g_date_time_new_now_local(); if (LastPressed != NULL) { diff = g_date_time_difference(now,LastPressed); if (diff < 1000000) { if (i127) i+=2; else i=0; } else { i=0; j++; } } printf("%d %d %d\n",i,j,button_str[i]); if (button_str[i]>127) { caption[j++] = button_str[i++]; caption[j] = button_str[i]; } else caption[j] = button_str[i]; LastPressed = g_date_time_new_now_local(); gtk_label_set_text((GtkLabel *) label, caption); } int main(int argc, char *argv[]) { gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); gtk_window_set_default_size(GTK_WINDOW(window), 200, 320); gtk_window_set_title(GTK_WINDOW(window), "T9 KEY"); gtk_container_set_border_width(GTK_CONTAINER(window), 5); vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL,1); label = gtk_label_new(NULL); label2 = gtk_label_new(NULL); gtk_label_set_text((GtkLabel *) label2, button_str); button = gtk_button_new_with_label(" 2\nabc\nàáãâç\nABC\nÀÁÃÂÇ"); gtk_container_add(GTK_CONTAINER(window),vbox); gtk_box_pack_start(GTK_BOX(vbox), label,TRUE,TRUE,0); gtk_box_pack_start(GTK_BOX(vbox), label2,TRUE,TRUE,0); gtk_box_pack_start(GTK_BOX(vbox), button,TRUE,TRUE,0); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(button_clicked), NULL); g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL); gtk_widget_show_all(window); gtk_main(); return 0; }