LINUX.ORG.RU

Упс . Забыл самое главное - hotkeys не работает под виндовс!

anonymous
()
Ответ на: комментарий от anonymous

Небольшая тестовая программа. Перед компиляцией ее хорошо бы перевести в кодировку UTF-8. Интересно, что она выдает и нажимается ли кнопка при нажатии Alt-Ф?

#include <gtk/gtk.h>

gboolean key_cb (GObject *obj, GdkEventKey *key, gpointer data)
{
g_message ("state = %d, keyval = %d", key->state, key->keyval);
return FALSE;
}

int main( int   argc,
          char *argv[] )
{
    GtkWidget *window;
    GtkWidget *label;
    
    gtk_init (&argc, &argv);
    
    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    label = gtk_button_new_with_mnemonic ("_Файл");
    gtk_container_add (GTK_CONTAINER(window), label);
    gtk_widget_show_all  (window);
    
    g_signal_connect (G_OBJECT(window), "key-press-event", G_CALLBACK(key_cb), NULL);
    
    gtk_main ();
    
    return 0;
}

anonymous
()
Ответ на: комментарий от anonymous

Под линуксом sk@sk:~/tmp$ cat 123 ** Message: state = 0, keyval = 65513 ** Message: state = 8, keyval = 97 ** Message: state = 0, keyval = 65513 ** Message: state = 8, keyval = 97 ** Message: state = 0, keyval = 65513 ** Message: state = 8, keyval = 97 ** Message: state = 0, keyval = 97 ** Message: state = 0, keyval = 65513

под виндовсом sk@sk:~/tmp$ cat /mnt/win_c/tmp/ispa/123 ** Message: state = 0, keyval = 65513 ** Message: state = 8, keyval = 97 ** Message: state = 0, keyval = 65513 ** Message: state = 8, keyval = 97 ** Message: state = 0, keyval = 97 ** Message: state = 0, keyval = 97 ** Message: state = 0, keyval = 65513

Все равно под виндой кнопка не нажимается :((

anonymous
()
Ответ на: комментарий от anonymous

Под линуксом
sk@sk:~/tmp$ cat 123
** Message: state = 0, keyval = 65513
** Message: state = 8, keyval = 97
** Message: state = 0, keyval = 65513
** Message: state = 8, keyval = 97
** Message: state = 0, keyval = 65513
** Message: state = 8, keyval = 97
** Message: state = 0, keyval = 97
** Message: state = 0, keyval = 65513

под виндовсом
sk@sk:~/tmp$ cat /mnt/win_c/tmp/ispa/123
** Message: state = 0, keyval = 65513
** Message: state = 8, keyval = 97
** Message: state = 0, keyval = 65513
** Message: state = 8, keyval = 97
** Message: state = 0, keyval = 97
** Message: state = 0, keyval = 97
** Message: state = 0, keyval = 65513


Все равно под виндой кнопка не нажимается :((

anonymous
()
Ответ на: комментарий от anonymous

Да, и еще такую бы попробовать, только с обоими раскладками клавиатуры.

#include <gtk/gtk.h>

gboolean key_cb (GObject *obj, GdkEventKey *key, gpointer data) { g_message ("keyval = %d, hardcode = %d, group = %d ", key->keyval, key->hardware_keycode, key->group); return FALSE; }

#include <gtk/gtk.h>

int main( int argc, char *argv[] ) { GtkWidget *window; GtkWidget *button; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); button = gtk_button_new_with_mnemonic ("_Файл"); gtk_container_add (GTK_CONTAINER(window), button); gtk_widget_show_all (window);

g_message("Keyval %d", gtk_label_get_mnemonic_keyval( GTK_LABEL(gtk_bin_get_child(GTK_BIN(button))))); g_signal_connect (G_OBJECT(window), "key-press-event", G_CALLBACK(key_cb), NULL); gtk_main (); return 0; }

anonymous
()
Ответ на: комментарий от anonymous

Да, и еще такую бы попробовать, только с обоими раскладками клавиатуры.

#include <gtk/gtk.h>

gboolean key_cb (GObject *obj, GdkEventKey *key, gpointer data)
{
g_message ("keyval = %d, hardcode = %d, group = %d ", key->keyval, key->hardware_keycode, key->group);
return FALSE;
}


#include <gtk/gtk.h>

int main( int   argc,
          char *argv[] )
{
    GtkWidget *window;
    GtkWidget *button;
    
    gtk_init (&argc, &argv);
    
    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    button = gtk_button_new_with_mnemonic ("_Файл");
    gtk_container_add (GTK_CONTAINER(window), button);
    gtk_widget_show_all  (window);

    g_message("Keyval %d", 
	gtk_label_get_mnemonic_keyval(
	    GTK_LABEL(gtk_bin_get_child(GTK_BIN(button)))));    
    
    g_signal_connect (G_OBJECT(window), "key-press-event", G_CALLBACK(key_cb), NULL);
    gtk_main ();
    
    return 0;
}

anonymous
()
Ответ на: комментарий от anonymous

Да и еще, откуда в точности gtk, каким образом устанавливался? Потому что проблемы вроде есть, но только с gtk установленного из Runtime/Development пакета (Gtk-Runtime-2.2.4....) взятого с Sourceforge.net. Вобщем, того, который с программой инсталяции.

anonymous
()
Ответ на: комментарий от anonymous

А помоему под виндой эта переменная на гтк не влияет. Но все равно попробовал - не помогло.

anonymous
()
Ответ на: комментарий от anonymous

Хоть уже понятно как решить проблему, на всякий случай все равно привожу вывод проги под виндовс:
sk@sk:/mnt/win_c/tmp/ispa$ cat 123
** Message: Keyval 1734
** Message: keyval = 65513, hardcode = 18, group = 0
** Message: keyval = 97, hardcode = 65, group = 0
** Message: keyval = 65513, hardcode = 18, group = 0
** Message: keyval = 97, hardcode = 65, group = 0
** Message: keyval = 65507, hardcode = 17, group = 0
** Message: keyval = 65505, hardcode = 16, group = 0
** Message: keyval = 65513, hardcode = 18, group = 0
** Message: keyval = 1734, hardcode = 65, group = 0
** Message: keyval = 65513, hardcode = 18, group = 0
** Message: keyval = 1734, hardcode = 65, group = 0
** Message: keyval = 65513, hardcode = 18, group = 0
** Message: keyval = 65513, hardcode = 18, group = 0

anonymous
()
Ответ на: комментарий от anonymous

Нет, отсюда видно, что есть баг в версии GTK. Поэтому обновление не поможет. Сегодня напишу разработчику, в чем проблема.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.