LINUX.ORG.RU

корректор раскладки


0

1

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

Реализовать это нужно на С++ (ну вернее хочется), не какие модули ядра не катят, работать должно без прав рута. Вопрос... это вообще возможно ?

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

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

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

Воот, подсобите smile

Я НЕ ПИШУ ТРОЯ, я хочу написать корректор расскладки. ДЛЯ себя и чисто в учебных целях.

Для этого мне нужно:

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

Абсолютно с вами согласен, данный материал можно так же использовать и для написание кейлогера, так же как и ножом можно резать хлеб или людей, но ведь ножи продают везде...


виновен

много оправдываешься, палено.

р.s. На сурсфордже готовый кейлогер найдешь... По крайней мере я в одно время для себя на питоне нашел.

chinarulezzz ★★ ()

Если очень хочется, то можно копать в сторону XIM/GTK_IM_MODULE/QT_IM_MODULE.

Я НЕ ПИШУ ТРОЯ

Ага.

x3al ★★★★★ ()

> Я НЕ ПИШУ ТРОЯ

Я Е ПИШУ ТРОЯ

Obvious fix.

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

в исходниках...

уже есть прорыв :) g_signal_connect(...) + «key-press-event», пока точно не уверн но кажется будет вызывать указанную в параметрах call-back функциию при нажатии клавиши в окне, дескпритор которого передан так же в параметрах.

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

пытаюсь найти функцию для получения дескриптора окна на которой в данный момент фокус ввода, пока без успешно. Было бы еще очень здорово найти функцию которой мож нобыло бы передать call back который срабатывал бы при изменении с фокусом ввода.

Ну тобишь фокус ввода у нас в одном окне, если он переходит в другое окно, то вызывается указанный мной call-back ?

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

да листал я уже и кейлогеры и корректоры расскладок. Конечно получил от туда небольшое представление о том что мне нужно, уцепил и какието конкретные моменты. Но теперь стоит вполне определенная проблема, а именно как получить дескриптор окна на котором сейчай фокус ввода находится.

нашел два варианта, либо XGetInputFocus (xlib), но мне нужно получить дескриптор GtkWindow, а выше приведенная функция возвращает дескриптор Window, как сделать перевод, пока так же не нашел.

Либо в Gtk юзать связку gtk_window_list_toplevels + gtk_window_is_active, но кажется это немного не то.

выб мне еще ссылку на гугл дали :)

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

как имею идентификатор окна заджоинить его к споему процессу что бы иметь возможность модифицировать его ? Помню что гдето видел прям кусок кода который это делает, но не как немогу повторно найти его в сети :(

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

может мне тогда кто нибудь подскажет как происходит связь окна на сервере с процессом на клиенте ???

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