LINUX.ORG.RU

Какой программой узнать, какая раскладка (rus или eng) в данный момент?


0

0
Здравствуйте!

Имею KDE 3, переключение раскладки настроено через xorg.conf (XKB само собой отключен), индикатор kkbswitch. Переключение раскладки глобальное - раскладка меняется для всех окон, а не только для текущего.

Озадачился вопросом - как можно узнать текущую раскладку клавиатуры?

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

Как это сделать - не нашел.

Курил опции программ: loadkeys, xmodmap, kkbswitch, kxkb, keymaps, showkey, dumpkeys, kbd_mode, ничего нужно не обнаружил.

Вопрос - какая прога показывает инфу о текущей включенной раскладке?

★
(точно не помню). В KDE4 есть в настройках "Системные уведомления" возможность "Выполнить команду" на событие. Вроде в KDE3 тоже подобное было...
lleshy ★★
()
нет такой вроде. но написать - дело получаса, включая заваривание чая.
svu ★★★★★
()
Ответ на: комментарий от lleshy
> "Выполнить команду" на событие. Вроде в KDE3 тоже подобное было

Было. Глючно жутко, функций своих не выполняет. Ну и события "переключения на нужную раскладку нет." Есть просто событие "переключения раскладки".
xintrea ★
() автор топика
Ответ на: комментарий от svu
Я б написал, наведите на мысль, какую либу и функции использовать.

Вообще-то мне нужна простая вещь - пикать на системном динамике при переключении раскладки, но разными тонами. То есть, при переключении на rus - пикать низким тоном, при переключении на eng - высоким. У меня так было под досом в keyrus настроено, жутко удобно.

Правда keyrus позволял и переключение по правому-левому шифту делать, при отпускании шифта само собой. В иксах отпускание клавиши хренпоймаешь, так что хотя бы по звуку ориентироваться.
xintrea ★
() автор топика
Ответ на: комментарий от xintrea
> Я б написал, наведите на мысль, какую либу и функции использовать.

libX11. подозреваю, что использовать надо что-то вроде XkbGetState(). смотри http://people.freedesktop.org/~alanc/xkb/html/XKBlib/XKBlib.html

> В иксах отпускание клавиши хренпоймаешь

в смысле?
dmiceman ★★★★★
()
Ответ на: комментарий от xintrea

Re^2: Какой программой узнать, какая раскладка (rus или eng) в данный момент?

А лампочка скрол лока на клавиатуре не устраивает?..
Arix
()
Ответ на: комментарий от xintrea
> нужна простая вещь - пикать на системном динамике при переключении раскладки, но разными тонами.

Индикация светодиодом ScrLk совсем не устраивает?

sin_a ★★★★★
()
Ответ на: комментарий от sin_a
> Индикация светодиодом ScrLk совсем не устраивает?

Совсем не устраивает. Я в досе с CRT монитором настраивал еще и цвет бордюра, чтоб он менялся в соответствии с раскладкой. Ну чтоб переключение раскладки еще и переферическим зрением контролировать. Жалко, что на LCD мониторе такого не сделаешь.
xintrea ★
() автор топика
Ответ на: комментарий от dmiceman
> libX11. подозреваю, что использовать надо что-то вроде XkbGetState(). смотри http://people.freedesktop.org/~alanc/xkb/html/XKBlib/XKBlib.html

Не, это сложно. Думаю, может kkbswitch модифицировать чтоб он что-то делал при смене иконки. Конечно, решение влоб, но работать должно по идее.

>> В иксах отпускание клавиши хренпоймаешь

> в смысле?


В прямом смысле. Все действия в иксах происходять при нажатии клавиши. События отжатия клавиши нет как понятия. Как минимум, наружу отжатие клавиш нигде не торчит. Ткните пальцем, если это не так.
xintrea ★
() автор топика
Ответ на: комментарий от xintrea
> Я в досе с CRT монитором настраивал еще и цвет бордюра, чтоб он менялся в соответствии с раскладкой. ... Жалко, что на LCD мониторе такого не сделаешь.

А что нибудь можно придумать.

Можно, например, оконный менеджер обучить цвет рамки окна менять.

Кстати, http://sourceforge.net/projects/xxkb/ не нравится?

sin_a ★★★★★
()
Ответ на: комментарий от xintrea
> kkbswitch модифицировать

можно. сейчас посмотрел — даже просто. смотри файлик xkeyboard.cpp, метод XKeyboard::processEvent().

> Ткните пальцем

man XKeyEvent, int type в структуре XKeyEvent?
dmiceman ★★★★★
()
Ответ на: комментарий от sin_a
> Можно, например, оконный менеджер обучить цвет рамки окна менять.

Не, это некрасиво.


> Кстати, http://sourceforge.net/projects/xxkb/ не нравится?


Глючная штука, я ему ума не дал.


В общем добавил три строчки в kkbswitch, теперь есть файлик в котором всегда хранится номер раскладки.

Берем исходники kkbswitch, в файл /kkbswitch/kbswitchtrayicon.cpp в метод updateTrayIcon() добавляем три строчки


char cmd[256];
sprintf(cmd,"echo %d > /tmp/kbd_groupno.txt",groupno);
system(cmd);


Компилим бинарник, тупо заменяем им бинарь, лежащий в /usr/bin (ибо kkbswitch не менялся с 2005 года), перегружаем иксы. И все, теперь в файле /tmp/kbd_groupno.txt всегда будет лежать номер текущей раскладки 0 или 1.
xintrea ★
() автор топика
Ответ на: комментарий от xintrea
> Я в досе с CRT монитором настраивал еще и цвет бордюра, чтоб он менялся в соответствии с раскладкой.

иэх… я так когда-то в линуксовой консоли делал.
dmiceman ★★★★★
()
Ответ на: комментарий от dmiceman
>> Ткните пальцем

> man XKeyEvent, int type в структуре XKeyEvent?


Ну а как настроить переключение раскладки при отжатии левого или правого шифта? (Левый шифт - аглийский, правый - русский). Причем отжатие должно быть "чистое", если при отжатии зажата еще какая-то кнопка, то отжатие чистым не является. Естественно, настроить нада без правки исходников иксов.
xintrea ★
() автор топика
Ответ на: комментарий от xintrea
> Ну а как настроить переключение раскладки при отжатии левого или правого шифта?

написать свой вариант kkbswitch/xxkb?
dmiceman ★★★★★
()
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.