Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Программирование клавиш  (Прочитано 3640 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн alien666

  • Автор темы
  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Программирование клавиш
« : 25 Май 2011, 20:14:49 »
Вечер добрый!

Не подскажите как запрограммировать кнопку в среде gtk/gnome, так чтобы при нажатии клавиши на клавиатуре она срабатывала так же как если бы происходило нажатие мышкой. Т.е. я формирую окно помещаю в него кнопку и функцией gtk_signal_connect пытаюсь запрограммировать обратный вызов, чтобы при нажатие к примеру клавиши("А") она отреагировала - т.е нажалась! Подскажите пожалуйста может другой функцией надо или другим способом?Заранее благодарен!
« Последнее редактирование: 25 Май 2011, 20:29:49 от alien666 »

Оффлайн фирэфохэ

  • Старожил
  • *
  • Сообщений: 2169
  • straightedge
    • Просмотр профиля
Re: Программирование клавиш
« Ответ #1 : 25 Май 2011, 23:23:52 »
Не понятно зачем это нужно. Именно закодить нужно? Xdotool не пойдёт?
http://i18.ЗАПРЕЩЁННЫЙ РЕСУРС/big/2011/0325/6d/19eaa72dd24048a6fb0587832c4b096d.gif КДЕ - УГ. Дебиан - недоось.

Оффлайн alien666

  • Автор темы
  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Re: Программирование клавиш
« Ответ #2 : 25 Май 2011, 23:58:02 »
нужно для разработки тестовой программы для тестирования клавиатуры. Я хочу накидать кнопки на виджет-сделать клавиатуру виртуальную и при нажатии кнопок на клавиатуре компьютера,чтобы отображались нажатые клавиши. Коды клавишь я нашел в библиотеке /usr/include/gdk-2.0. Вообщем надо как-то сформировать обратный вызов так чтобы при нажатии клавиши срабатывала кнопка на виджете-виртуальной клавиатуре.

Оффлайн фирэфохэ

  • Старожил
  • *
  • Сообщений: 2169
  • straightedge
    • Просмотр профиля
Re: Программирование клавиш
« Ответ #3 : 26 Май 2011, 20:38:31 »
Хз.
http://i18.ЗАПРЕЩЁННЫЙ РЕСУРС/big/2011/0325/6d/19eaa72dd24048a6fb0587832c4b096d.gif КДЕ - УГ. Дебиан - недоось.

Оффлайн Shalmaran

  • Активист
  • *
  • Сообщений: 837
  • Cow super power!
    • Просмотр профиля
    • kristyushatmb.livejournal.com
Re: Программирование клавиш
« Ответ #4 : 26 Май 2011, 23:46:36 »
нужно для разработки тестовой программы для тестирования клавиатуры. Я хочу накидать кнопки на виджет-сделать клавиатуру виртуальную и при нажатии кнопок на клавиатуре компьютера,чтобы отображались нажатые клавиши. Коды клавишь я нашел в библиотеке /usr/include/gdk-2.0. Вообщем надо как-то сформировать обратный вызов так чтобы при нажатии клавиши срабатывала кнопка на виджете-виртуальной клавиатуре.

Если Вам не критична библиотека, на которой Вы это все будете осуществлять, то я советую QT, т.к. там есть очень удобный механизм сигналов и слотов. Мне кажется, что копать можно в эту сторону.
« Последнее редактирование: 26 Май 2011, 23:54:38 от Alexandr6468 »
Banana Pi

Оффлайн alien666

  • Автор темы
  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Re: Программирование клавиш
« Ответ #5 : 27 Май 2011, 08:28:26 »
Дело в том что с QT я не знаком, да и задание по которому я работаю это обязательное использование библиотеки GTK+-2.0 В графической оболочке GNOME

Оффлайн Shalmaran

  • Активист
  • *
  • Сообщений: 837
  • Cow super power!
    • Просмотр профиля
    • kristyushatmb.livejournal.com
Re: Программирование клавиш
« Ответ #6 : 27 Май 2011, 13:28:47 »
Дело в том что с QT я не знаком, да и задание по которому я работаю это обязательное использование библиотеки GTK+-2.0 В графической оболочке GNOME

В GTK, тоже всё есть, но по моему, программировать с этой либой намного сложнее...
Banana Pi

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 4994
  • Все по палатам!
    • Просмотр профиля
Re: Программирование клавиш
« Ответ #7 : 27 Май 2011, 13:33:48 »
Посмотрел сейчас в своей проге на QT - если нажимаю клавишу буквы подчеркутой в названии кнопки (&), то кнопка визуально нажимается...
Извините, я все еще учусь

Оффлайн фирэфохэ

  • Старожил
  • *
  • Сообщений: 2169
  • straightedge
    • Просмотр профиля
Re: Программирование клавиш
« Ответ #8 : 27 Май 2011, 14:04:01 »
Про подчёркивания не подумал, может так пойдёт (alt+o - кнопка нажимается)?
#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);
  gtk_window_set_default_size (GTK_WINDOW(window), 100, 100);

  button = gtk_button_new_with_label ("l_ol");
  gtk_button_set_use_underline (GTK_BUTTON(button), TRUE);

  gtk_container_add (GTK_CONTAINER(window), button);


  g_signal_connect (G_OBJECT(window), "delete_event",
                    G_CALLBACK(gtk_main_quit), NULL);

  gtk_widget_show_all (window);
  gtk_main ();
  return !TRUE && !FALSE;
}
http://i18.ЗАПРЕЩЁННЫЙ РЕСУРС/big/2011/0325/6d/19eaa72dd24048a6fb0587832c4b096d.gif КДЕ - УГ. Дебиан - недоось.

Оффлайн alien666

  • Автор темы
  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Re: Программирование клавиш
« Ответ #9 : 28 Май 2011, 11:25:40 »
button = gtk_button_new_with_label ("l_ol");
  gtk_button_set_use_underline (GTK_BUTTON(button), TRUE);
я так понимаю здесь мнемоника l_ol?а где весь список ведь это не похоже на коды клавишь в gtk, пардон в gdk

Оффлайн фирэфохэ

  • Старожил
  • *
  • Сообщений: 2169
  • straightedge
    • Просмотр профиля
Re: Программирование клавиш
« Ответ #10 : 28 Май 2011, 12:22:15 »
Цитировать
button = gtk_button_new_with_label ("l_ol");
gtk_button_set_use_underline (GTK_BUTTON(button), TRUE);
Перед любой буквой ставишь подчёркивание и она будет нажимать кнопку.
http://i18.ЗАПРЕЩЁННЫЙ РЕСУРС/big/2011/0325/6d/19eaa72dd24048a6fb0587832c4b096d.gif КДЕ - УГ. Дебиан - недоось.

Оффлайн alien666

  • Автор темы
  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Re: Программирование клавиш
« Ответ #11 : 28 Май 2011, 14:01:23 »
Я оказывается до этого пробывал подобную функцию gtk_set_relief, но она , к сожалению как и gtk_button_set_use_underline, не реагирует на шифт и к сожалению работает только в паре с "alt" в общем мнемоники только внушают веру, что существует такой метод который связывает код клавиш и реакцию кнопки на виджете...но все равно спасибо фирэфохэ!!!!!!!!!!!!!!!!!!!!!! 8)

Пользователь решил продолжить мысль 28 Май 2011, 14:05:25:
Посмотрел сейчас в своей проге на QT - если нажимаю клавишу буквы подчеркутой в названии кнопки (&), то кнопка визуально нажимается...
а можно текст проги на QT c кнопкой на окне, которая реагирует на нажатие клавиши
« Последнее редактирование: 28 Май 2011, 14:05:25 от alien666 »

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 4994
  • Все по палатам!
    • Просмотр профиля
Re: Программирование клавиш
« Ответ #12 : 28 Май 2011, 23:38:23 »
а можно текст
Я ошибся насчет подчеркивания (&), главное метод setShortcut(Qt::Key_x) - видать старею (
(Нажмите, чтобы показать/скрыть)
Извините, я все еще учусь

Оффлайн alien666

  • Автор темы
  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Re: Программирование клавиш
« Ответ #13 : 29 Май 2011, 21:36:24 »
Сергей по-моему нет подобной функции в gtk+, очень жаль...

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 4994
  • Все по палатам!
    • Просмотр профиля
Re: Программирование клавиш
« Ответ #14 : 30 Май 2011, 00:12:28 »
нет подобной функции в gtk
Не скажу. Когда перешел в линукс выбрал Qt, как более удобную для моих целей....
Извините, я все еще учусь

 

Страница сгенерирована за 0.182 секунд. Запросов: 24.