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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.