xneur: переключение двух раскладок по ctrl

На компьютере я всегда использовал три раскладки Английскую (как основную), Русскую, и Украинскую.

Когда я сидел на винде, то активно использовал punto switcher, и не для того чтобы он мне мог автоматом переключать раскладки, а для быстрой смены двух раскладок по нажатию на левый control а также для переключение раскладки выделенного по хоткею. Смена раскладок в винде у меня была выставлена на Shift+Ctrl, а в настройках Пунто Свитчера стояла галочка "Только Русский/Английский" а под ней "Переключать по..." и со списка был выбран "левый Ctrl". Авто переключение было отключено. Таким образом я всегда мог по нажатия всего одного контрола пометь две раскладки, а когда мне нужны была украинская раскладка то я просто нажимал Shift+Ctrl.

Но вот настало время "пробуждения" и я понял что нужно целиком и полностью переходить на Линук. Поставил я себе Ububntu, и все в ней было супер(не считая дрова на ATI). Я нашел замену всем программам которыми я пользовался. Когда начал искать замену punto switcher то сразу же наткнулся на xneur (gxneur). И все в нем было хорошо, но вот только не было в нем опции "Переключать только русский/английский". С этим я мерится не хотел. Лазил в настройках программы, в настройке Убунту (Меню->Система->Параметры->Клавиатура) но так ничего не нашел по  этому поводу.

Но я ведь не ищу легких путей :) Я решил самостоятельно дописать в программу нужную мне функцию (люблю open source). Итак начнем!

В системе у меня установлено три раскладки Английская, Русская и Украинская. Переключение между ними забито на Shift+Ctrl.

Скачаны исходники xneur-0.9.5 c http://www.xneur.ru/. Распакованы в папку /home/xxx/xneur-0.9.5/

Скачаны исходники gxneur-0.9.5 c http://www.xneur.ru/. Распакованы в папку /home/xxx/gxneur-0.9.5/

Открываем файл  /home/xxx/xneur-0.9.5/lib/main/program.c

Находи строку "if (type == KeyRelease)"

После нее вставляем:

//druss add
if (strcmp (XKeysymToString(key), "Control_L") == 0)
{
switch (get_cur_lang ())
{
case 0:{ printf ("[DRUSS] Lang is Englishn"); break;}
case 1:{ printf ("[DRUSS] Lang is Russiann"); switch_lang (2); break;}
case 2:{ printf ("[DRUSS] Lang is Ukrainiann"); break;}
default: printf ("[DRUSS] Unknown langn");
}

}
//druss add

Сохраняем файл и выполняем команду:

cd /home/xxx/xneur-0.9.5/
./configure
make
sudo make install
cd /home/xxx/gxneur-0.9.5/
./configure
make
sudo make install

После установки запускаем gxneur, а он автоматом запустит xneur. В трее появится флажок. Тычем на него правой кнопкой мыши и выбираем "Параметры".

Ставим галочку "Включить ручной режим" (отключает авто переключение).

Переходим в раздел раскладки. Так добавляем Украинскую раскладку и ставим ей номер 2. У нас должно выйти Английский - 0, Русский - 1, Украинский - 2.

Переходим в раздел "Комбинации клавиш" и на "Переключение раскладки" ставим Control.

Все готово. Теперь добавляем gxneur в автозагрузку

Меню -> Система -> Параметры -> Запускаемые приложения