Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> обработка при нажатии кнопки на клавиатуре 
:(
    Опции темы
cupper
Дата 18.1.2011, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 525
Регистрация: 29.11.2006

Репутация: нет
Всего: 1



Здравствуйте. Мне нужно отслеживать нажатые на клавиатуре клавиши (получить их коды, или же сразу букву обозначающую клавиатуру, но только нужно в обоих раскладках это получать...) (только буквы или shift + буквы). Немного погуглив огорчился так как ничего точного на этот вопрос не нашел. 
Реализовать это нужно на С++ (ну вернее хочется), не какие модули ядра не катят, работать должно без прав рута. Вопрос... это вообще возможно ?

На сколько я понял средствами С++ этого не сделать, и нужны библиотеки типа QT или чего там еще есть. В какую лучше обратить с поставленной задачей.


Задача максимум: получать коды символов нажатых в пределах одного окна (поля ввода) (не своей программы, а системы в целом).

Тобишь если @ввод" попал в какуюто область ввода (строка браузера, блокнот, опенофис) нужно это как то отследить и считывать в буфер (по ходу ввода) вводимые данные. 

Воот, подсобите smile
PM MAIL   Вверх
null56
Дата 18.1.2011, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 721
Регистрация: 19.3.2008

Репутация: 4
Всего: 12



посмотри запрос в гугле: "linux клавиатурный шпион"
может найдешь - то что тебе нужно
http://www.google.ru/search?q=linux+%D0%BA...%B8%D0%BE%D0%BD
PM MAIL   Вверх
cupper
Дата 18.1.2011, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 525
Регистрация: 29.11.2006

Репутация: нет
Всего: 1



Цитата(null56 @ 18.1.2011,  16:35)
посмотри запрос в гугле: "linux клавиатурный шпион"
может найдешь - то что тебе нужно
http://www.google.ru/search?q=linux+%D0%BA...%B8%D0%BE%D0%BD

на тему кейлогеров я пробывал гуглить, правда не особо долго так как там на такие запросы ищется только софт. Даже если и получится найти исходники то они скорее всего будут сделаны на С с использованием какогонибуть хардкора.

Я же хочу найти аккуратное решение. Как многие вероятно подумали, я замыслил написать не кейлогер, а корректно раскладки )) написать не абы как, нормально. 
PM MAIL   Вверх
cupper
Дата 19.1.2011, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 525
Регистрация: 29.11.2006

Репутация: нет
Всего: 1



не подскажите как в GTK получить окно (верхнего уровня) которое в данные момент владеет фокусом ? 

Перегуглил уже тонну сайтов, доку перерыл, но именно этой функции так и ненашел. 

Есть, функция gtk_window_list_toplevels 
Цитата

Возвращает список всех существующих окон верхнего уровня. На виджеты в списке нет индивидуальных ссылок. Если вы хотите выполнить итерацию через список и выполнить действия, вовлекающие callbacks-функции, которые могли бы уничтожить виджеты, вы должны сначала вызвать g_list_foreach (result, (GFunc)g_object_ref, NULL), а затем убрать ссылки на все виджеты.

можно перебирать весь список и проверять каждое окно функцией gtk_window_is_active ()
Цитата

Определяет, является ли окно частью текущемго активного верхнего уровня. (Таким образом, окно верхнего уровня получает нажатие клавиши.) Значение TRUE возвращается, если активно непосредственно окно верхнего уровня, а так же если, скажем, GtkPlug встроен в активный верхний уровень. Вы можете использовать эту функцию, если хотите отрисовывать виджет по разному в активном и не активном окне. Смотрите gtk_window_has_toplevel_focus()


но я не уверен что правильно понял их смысл. И данное решение уж совсем плохое.

Это сообщение отредактировал(а) cupper - 19.1.2011, 13:44
PM MAIL   Вверх
cupper
Дата 19.1.2011, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 525
Регистрация: 29.11.2006

Репутация: нет
Всего: 1



нашел функцию Xlib XGetInputFocus(), теперь вопрос в том как дескпритор окна Window переделать в GtkWindow ?) или это тоже неочень хорошее решение ?
PM MAIL   Вверх
null56
Дата 19.1.2011, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 721
Регистрация: 19.3.2008

Репутация: 4
Всего: 12



cupper, вообще подобные вопросы лучше задавать в разделе "Кроссплатформенное программирование (gtk/qt)", сюда спецы по подобным вопросам могут просто не заглядывать
PM MAIL   Вверх
cupper
Дата 19.1.2011, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 525
Регистрация: 29.11.2006

Репутация: нет
Всего: 1



упс. Я как то сей раздел даже не замечал. Спасибо. Эту тему в общем закрываю. Перехожу туда.
PM MAIL   Вверх
boostcoder
Дата 19.1.2011, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 16
Всего: 110



клавиатура - это устройство. читай асинхронно /dev/input/event*
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0486 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.