The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Переключение раскладки клавиатуры в KDE. (kde rus keyboard)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: kde, rus, keyboard,  (найти похожие документы)
From: White Unicorn <http://whiteunicorn.dax.ru>; Newsgroups: Date: Mon, 20 Sep 2004 18:21:07 +0000 (UTC) Subject: Переключение раскладки клавиатуры в KDE. Оригинал: http://whiteunicorn.dax.ru/tricks/unix/kde_rusen.html Переключение rus/en, KDE и разные клавиши для разных раскладок. О чем речь. Как известно, есть множество способов настроить переключение раскладки клавиатуры. На разном уровне. Мне был нужен способ, использующий xkb (та штука, которая настраивается в XF86Config). Кто не помнит/не знает, способ заключается в следующем: В файле /etc/X11/XF86Config (или XF86Config-4 для четвертой версии иксов) пишем Section "InputDevice" [skip] Option "XkbRules" "xfree86" Option "XkbModel" "pc105" Option "XkbLayout" "ru(winkeys)" Option "XkbOptions" "grp:ctrl_shift_toggle" EndSection Строчка "XkbOptions" "grp:ctrl_shift_toggle" задает клавиши для переключения (в данном случае Control+Shift). Метод совершенно "железный", но.. настоящий Граблеискатель всегда найдет грабли :) Проблема номер раз. При использовании в качестве window system KDE этот метод почему то не срабатывает. Чтобы он заработал, нужно в Control Center KDE включить графический переключатель раскладок - kxkb и хотя бы один раз переключиться на русский язык и набрать хотя бы одну букву. После этого начинает работать и метод через xkb. Переключалка через kxkb тоже не перестает работать, т.е. имеем одновременно два метода переключения, хотя индикатор в трее показывает состояние только kxkb (что раздражает :). Почему бы в таком странном случае не использовать метод kxkb ? Да тормозит он.. После нажатия сочетания клавиш реально другие буквы начинают набираться только через пару-тройку секунд, что очень мешает. Кроме того, на него нельзя назначить такие сочетания, как Control+Shift или просто Control или что то подобное. Только с какой то буквой (по умолчанию Control+Alt+K). Проблема номер два. После того, как мы решаем проблему номер раз, вылезает еще одна (возможно, только на Mandrake дистрибутивах) Клавиша с флажком на клавиатуре начинает работать, как в Windows, т.е. раскрывает меню Пуск. В то время как мне, например, удобнее использовать ее как еще один Modifier key, аналогичный Conrol, Shift и Alt. Т.е. что-то переназначает ее код с META_L на F13. Проблема номер три. Честно говоря, не люблю я вообще индикаторы текущей раскладки. Просто не люблю, без комментариев. Мне (подчеркиваю - _мне_) удобнее другой вариант - когда у меня для переключения в конкретную раскладку назначено отдельное сочетание клавиш. Как в DOS. Левый Control+Shift - английские буквы, правый - русские буквы. В этом случае мне не надо думать, какая у меня раскладка текущая - я нажимаю тот ключ, который нужен и получаю требуемую раскладку независимо от того, что было текущим. Решение. Решения для этих проблем были найдены с помощью Ивана Паскаля, на чьем сайте можно найти очень подробную информацию о работе xkb и вообще об особенностях национальных настроек юниксов :) http://pascal.tsu.ru/ http://old-www.tsu.ru/~pascal/ (BTW, перед тем, как всерьез бодаться с локализацией в любом ее проявлении, _очень_ рекомендую на этот сайт заглянуть и хотя бы по диагонали просмотреть, возможно часть проблем уже будет решена.) Проблема номер раз. Не вдаваясь в подробности, _как_ было найдено решение, рассказываю, в чем "корень зла". KDE - штука достаточно умная. Если ее запустить, пока никаких настроек по части локализации на уровне иксов сделано не было, она по умолчанию активизирует свой метод, т.е. загружает kxkb и создает для него файл конфигурации по умолчанию. Поскольку она не может знать, какой именно еще язык, кроме английского, может понадобится, в kxkb активизируется только английская раскладка. Поскольку раскладка только одна, то индикатор в трее не показывается (чего там индицировать, если и так выбор однозначный). Естественно, что по этой же причине не срабатывает и переключение раскладки, т.е. оно срабатывает, но в списке раскладок только одна и она все время и становится текущей. Почему в этом случае не срабатывает переключение через xkb - другой вопрос, но он нас не интересует в данном случае. В данной ситуации нам интересно, как же сделать все таки переключение раскладок. И у нас есть два пути - донастроить kxkb (т.е. добавить туда нужную нам альтернативную раскладку через KDE Control Center) или наоборот отключить его совсем, чтобы заработал xkb переключатель. Если мы попытаемся через KDE Conrol Center просто отключить kxkb, то он вернется в состояние "одна раскладка, индикатор отсутствует". Чтобы все таки _отключить_ его по настоящему надо стереть (или переименовать) файл конфигурации kxkb: ~/.kde/share/config/kxkbrc Перегружаем KDE и теперь переключение через xkb работает. В том случае, когда мы запустили для пользователя KDE первый раз при уже настроенном xkb этого глюка просто не возникнет и метод через xkb будет работать сразу. Проблема номер два. Чтобы найти, кто делает переназначение с META_L на F13 был написан такой скрипт: #!/bin/sh ps -ef >> /tmp/spy echo "===============" >> /tmp/spy echo $* >> /tmp/spy echo "---------------" >> /tmp/spy cat - >> /tmp/spy И все это чудо под именем xmodmap было подсунуто в систему вместо настоящего xmodmap. Потом, после перезапуска KDE, виновник был найден :) Из скрипта /usr/bin/startkde вот таким образом [skip] # Dadou - 2.1.1-4mdk - To be able to use the Windows key to open the K menu # laurent kde 2.2-22mdk test windows-key /usr/bin/test-windows-key [skip] вызывается скрипт такого вида: /usr/bin/test-windows-key #!/bin/sh if [ -e /etc/sysconfig/keyboard ]; then export toto=$(grep "DISABLE_WINDOWS_KEY=yes" /etc/sysconfig/keyboard) if [ -z $toto ]; then xmodmap -e 'keycode 115=F13' xmodmap -e 'keycode 117=Menu' fi fi А в файле /etc/sysconfig/keyboard этот ключ само собой установлен в NO (ведь мы же хотим, чтобы эти клавиши _работали_, не так ли ? :) Что делать дальше - понятно (вариантов несколько, на выбор :) Ну и наконец решение проблемы номер три. Подробности о том, почему оно так работает, лучше почитать на сайте Ивана Паскаля, более подробно это рассказать сложно :) Решение же заключается в том, что в файле описания ключей переключения мы меняем тип смены раскладки с типа "предыдущая/следующая" на тип "первая/последняя". Естественно, что этот метод применим только если у нас только две рараскладкиесли больше - то он не позволит выбирать "средние" между первой и последней. Итак. В файле /usr/X11R6/lib/X11/xkb/symbols/group ищем наш переключатель (у меня это ctrl_shift_toggle) и меняем все ISO_Next_Group на ISO_Last_Group, а ISO_Prev_Group на ISO_First_Group. Сохраняем файл, рестартуем иксы и теперь мы можем переключиться на английскую раскладку левым сочетанием клавиш, а на русскую - правым. И никак иначе :) (c) White Unicorn Любая часть этого документа может быть скопирована любым из существующих способов :) (Но если вы оставите в форуме (http://whiteunicorn.dax.ru/cgi-bin/forum.pl?act=view) свои замечания по поводу успешного / неуспешного применения солюшена, то это будет совсем хорошо :)

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, Lena (??), 18:12, 13/04/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    u menia vot kakaia problemka to.... I chto to ne mogu naiti fail /etc/X11/XF86Config nichego podobnogo netu ((((
    u menia Slackware 10....
    nepodskazite v chem problema?
     
  • 1.2, Mark (??), 11:40, 23/08/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Наверное уже догнала, но всеже:
    видимо у тебя не иксфри а иксорг а сталобыть
    тебе нужно править xorg.conf(а путь прежний) ;)
     
  • 1.3, Софья (?), 12:53, 26/11/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    я тоже не могу ничего сделать сос воей клавиатурой,сначало она у меня работала,а сейчас всё сбилось никак не могу переключить язык на английский.уже капалась в параметрах.подскажите что делать?
     
     
  • 2.4, SeRj (??), 00:16, 27/11/2005 [^] [^^] [^^^] [ответить]  
  • +/
    >я тоже не могу ничего сделать сос воей клавиатурой,сначало она у меня
    >работала,а сейчас всё сбилось никак не могу переключить язык на английский.уже
    >капалась в параметрах.подскажите что делать?

    В файле /etc/X11/xorg.conf в секцию "InputDevice"
    добавить:
        Option          "XkbLayout"     "us,ru(winkeys)"
        Option          "XkbOptions"    "grp:ctrl_shift_toggle"

     

  • 1.5, andrystepa (??), 15:04, 09/08/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    У меня стоит Mandriva Linux 2006. В файле kxkbrc стои ShowFlag=true, однако индикатора раскладки, ни в виде флага, ни в виде значка из букв нету!! xkb тоже не работает а переключиться в русскую раскладку в kxkb, чтобы ввести хоть один символ не могу!! Как быть?
     
  • 1.6, FSA (ok), 06:47, 05/05/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    "Всю жизнь" использовал такие строчки в xorg.conf
    Section "InputDevice"
        Identifier     "Keyboard1"
        Driver         "kbd"
        Option         "AutoRepeat" "500 30"
        Option         "XkbRules" "xorg"
        Option         "XkbModel" "geniuscomfy2"
        Option         "XkbLayout" "us,ru"
        Option         "XkbVariant" "basic,winkeys"
        Option         "XkbOptions" "grp:ctrl_shift_tog gle,numpad:microsoft" EndSection

    Правда у меня xorg 6.9 (7.2) и FreeBSD, может поэтому проблем нет. Переключение как в Windows по Ctrl+Shift.

     
     
  • 2.7, andrystepa (ok), 13:11, 03/06/2007 [^] [^^] [^^^] [ответить]  
  • +/
    >"Всю жизнь" использовал такие строчки в xorg.conf
    >Section "InputDevice"
    >    Identifier     "Keyboard1"
    >    Driver        
    > "kbd"
    >    Option        
    > "AutoRepeat" "500 30"
    >    Option        
    > "XkbRules" "xorg"
    >    Option        
    > "XkbModel" "geniuscomfy2"
    >    Option        
    > "XkbLayout" "us,ru"
    >    Option        
    > "XkbVariant" "basic,winkeys"
    >    Option        
    > "XkbOptions" "grp:ctrl_shift_tog gle,numpad:microsoft" EndSection
    >
    >Правда у меня xorg 6.9 (7.2) и FreeBSD, может поэтому проблем нет.
    >Переключение как в Windows по Ctrl+Shift.
    Установил себе новую Fedora Core 6 32bit - никаких файлов не редактировал, только настроил в Центре управления переключение раскладок и XKB - неожиданно все заработало как надо - даже значок в трее переключается!!!!! Но ложка дегтя появилась - установил все точно так же на домашнем компе - все работает, но значок не переключается.

     
     
  • 3.8, daln (?), 23:29, 01/07/2007 [^] [^^] [^^^] [ответить]  
  • +/
    В К/Настройка/Региональные и специальные возможности/Раскладка клавиатуры надо оставить на закладке "Раскладка" только ОДНУ используемую раскладку: русскую, но ОБЯЗАТЕЛЬНО выставить check box "Включить латинскую раскадку".
    Переключение на закалдке "Параметры XKB" настроить по своему усмотрению, мне удобней всего Ctrl-Shift.
    После этого KDE по Ctrl-Shift пеключает раскладки с русской на английскую.
    Жаль только в трее флаг при этом не меняется.
     
     
  • 4.9, AmdY (?), 16:58, 03/08/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо, а то загемороился с переключением.
     
  • 4.12, Runderbin (?), 23:44, 20/09/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Наиболее простой способ. А чтобы раскладка отображалась в трее, можно заюзать kkbswitch.
     
     
  • 5.13, Кулинар (?), 09:52, 27/11/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Плюс для срабатывания winkeys заходим в  Центр управления - Региональные и специальные возможности - Раскладка клавиатуры, выделяем справа русскую раскладку и ниже в выпадающем списке Вариант раскладки выбираем winkeys. У правого шифта теперь будет "."
     

  • 1.10, xtir (?), 02:42, 05/01/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    легче флаг вообще отключить в настройках xkb)
    чтобы глаза не мозолил))
     
  • 1.11, burgua (?), 00:26, 07/02/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    правка xorg.conf + kkbswitch
    Идеальный выбор для KDE
     
  • 1.14, Дмитрий (??), 13:54, 01/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Помогите пож-та, после того как я переключаю свою клавиатуру на английский язык клавиши не соответствуют своим значениям, т.е. например вместо "w" у меня ",", вместо "x" у меня "q" и т.д., что делать???
     
  • 1.15, DI (??), 14:17, 04/08/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    y men9 english Windos ne mogy pereklychits9 na russkii 9zblk podska)l(ite !!!!!
     
  • 1.16, rip86oz (?), 20:30, 06/06/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Мучался с этой раскладкой часа два.
    Проблема решена. Выжимка выглядит просто - под рутом вводим: setxkbmap -model pc105 -layout ru,us -option grp:alt_shift_toggle
    Это после grp: указан способ переключения языка(алт-шифт у меня) получить другой можно на вкладке Параметры XKB, в окне настроек "Раскладка клавы" - там когда щелкаешь галки снизу в строке всё что надо отображается.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру