Итак, включив в KDE аплет для переключения клавиатуры, я сталкнулся с тем, что мое переключение клавиатуры в X перестает работать.
Открыв в KDE Contol center вкладку Keyboard Shortcuts, я обнаружил, что теперь моя клавиатура переключается по Ctrl+Alt+K. Однако переключив по этой комбинации английский язык на русский, я обнаружил, что переключиться по ней обратно я уже не могу.
Немного подумав, я сообразил, что после переключения на русский у меня уже нет английской клавиши K. Поэтому пришлось добавить еще одну комбинацию: Ctrl+ALt+K(русское K).
Помучавшись некотрое время, пытаясь запустить включение по Ctrl+Shift (чего мне так добиться и не удалось), я обратился к документации и увидел в ней, что при использовании этого аплета он, как бы приобритает приоритет над тем, что используется в X.
Хотя сам он никакие настройки X не меняет.
Кроме того KDE Control Center (вкладка Keyboard Shortcuts) упорно называл правю клавишу Ctrl клавишей ISO_Next_Group. Левую он так и называл Ctrl, но при нажатии Shift (так что результирующая комбинация получалась Ctrl+Shift, далее шел знак плюс, т.е. мне любезно предлагалось нажать еще одну клавишу, а без этого комбинация Ctrl+Shift не регистрировалась). Можно было конечно использовать комбинацию Shift+ISO_Next_Group, т.е. попросту Shift+правый Ctrl (да вот именно в таком порядке эта комбинация оказывалась работающей).
Продолжение следует. Может быть путем дальнейших исследований удасться заставить kxkb (так называется этот аплет работать нормально). Пока мне представляется, что на 99.99% машин этот аплет работает некорректно, или просто X не донастроены.
Жду Ваших комментариев и предложений.
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
Продолжение (Господа, я в Linux новичок, поэтому прошу поправляйте, если где-то, что-то я неправильно называю или неправильно понимаю).
Обратившись к каталогу /etc/X11/xkb и прочтя readme файлы, содержащиеся в них, я выяснил следующее:
Поведение клавиатуры управляется пятью параметрами
XkbRules — файлы правил, испольуемые для составления физической раскладки или трансляции клавиатуры (mapping)
# Кстати видел много примеров когда параметр XkbRules вообще не указывался
# пользователями (например при сообщении о своих проблемах, когда они
# приводятчасть своего файла XF86Config или XF86Config-4).
XkbModel — Название модели типа Вашей клавиатуры
XkbLayout — Раскладка, которую Вы собираетесь использовать (layout)
XkbVariant — Варианты раскладки, которую Вы собираетсь использовать
XkbOptions — Дополнительные конфигурационные возможности пакета xkb
Наличие нужного файла правил зависит от изготовителя Вашей клавиатуры.
В общем случае, самым распространенным файлом правил является файл xfree86.
Для каждого файла правил имеется файл описаний, имя которого .lst.
Например, для нашего файла xfree86 таким файлом будет xfree86.lst, который находится в конфигурационном каталоге пакета xkb ( /etc/X11/xkb/rules).
По-моему тебе пора писать письма в КДЕ с мольбами об исправлении этого злощастного апплета =)
Кстати это может действительно помочь.
Допустим Вы хотите сконфигурировать американскую клавиатуру для ПК со 104 клавишами, так как это описвается в файле xfree86.lst. Это может быть сделано при помощи нескольких строк, которые должны быть в Вашем файле XF86Config или XF86Config-4.
Section «InputDevice»
Identifier «Keyboard1»
Driver «Keyboard»
Option «XkbModel» «pc104»
Option «XkbLayout» «us»
Option «XKbOptions» «»
EndSection
Значения параметров XkbModel и XkbLayout обычно не приносят никаких сюрпризов.
Параметр XKbOptions явно установлен в пустой набор параметров.
Параметр XkbVariant вообще не указан.
Это означает, что загружается вариант раскладки, используемый по умолчанию и называемый базовым.
Конечно, это может быть сделано при помощи утилиты setxkbmap.
Команда Shell, загружающая ту же саму клавиатурную раскладку, такова:
setxkbmap -rules xfree86 -model pc104 -layout us -option «»
Я думаю можно самому попробовать решить эту проблему, например, вот есть в твоей домашней директории каталог .kde/share/config, в нем есть файл kdeglobals по моему
В нем есть такая строчка
Switch to Next Keyboard Layout=ISO_Next_Group;ISO_Next_Group (такая в моем)
Попробуй поставить вместо нее такую:
Switch to Next Keyboard Layout=Ctrl+Shift_L;Ctrl+Shift_R
Что-то срабатывает, но не до конца.
Я вот понял, надо четко разобраться в документации.
Другие способы просто какие-то все корявые.
Да еще вдогон, вот у меня вся аппаратура работает превосходно, на начальной стадии я столкнулся с проблемой установки драйверов для своего Radeon 9800XT, но быстро с ней разобрался.
(Правда не могу признать это своей заслугой, просто использую одни Brand модели).
Это единственная пока проблема у меня с Linux.
Далее предстоят разборки со шрифтами, с Wine и все.
Для меня просто удивительно, что Linux сообщество за 10 лет, так и не создало простую и удобную схему руссификации.
Кстати, то что мы применяем, это не очень уж и хорошо.
Все таки стремление должно быть к Unicode. Далее, вся руссификация делается на базе i18n, это не очень то хороший способ, стремиться надо, чтобы все это делать на базе m17n, но вообще-то пусть Linux сообщество не обижается, даже в технологии i18n (ну мне так кажется и то с трудом разбирается, а если и разбирается, то объяснить не может, так у меня ребенок воьмилетний с компьютером общается, куда-то тыкнет, что-то получится, он и запомнит, для ребенка наверно это еще и сойдет, но для спецов ни в каие рамки не лезет).
я плакаль :)))
особеено — «Да еще вдогон, вот у меня вся аппаратура работает превосходно, на начальной стадии я столкнулся с проблемой установки драйверов для своего Radeon 9800XT, но быстро с ней разобрался.
!!(Правда не могу признать это своей заслугой, просто использую одни Brand модели)!!.»
Начиная с версии XFree86 4.3.x, Вы можете использовать конфигурацию, в которой использется насколько раскладок. В основном это позволяет загружать до четырех клавиатурных раскладок одновременно. Каждая такая раскладка принадлежит к своей собственной группе. Группы, в отличии от полного клавиатурного ремэпинга (я называю это физической раскладкой) могут переключаться очень быстро, от одной к другой, при помощи определенной клавишной комбинации.
Допустим Вы хотите сконфигурировать свою новую беспроводную клавиатуру Logitech и намереваетесь использовать три различные раскладки одновременно: американскую, чешскую и немецкую (в таком порядке), а также Вы предполагаете использовать комбинацию Alt-Shift для переключения между ними.
Тогда указанный отрывок кода из файла XF86Config будет выглядеть так:
Section «InputDevice»
Identifier «Keyboard1»
Driver «Keyboard»
Option «XkbModel» «logicordless»
Option «XkbLayout» «us,cz,de»
Option «XKbOptions» «grp:alt_shift_toggle»
EndSection
Тот же самый результат может быть получен такой командой Shell:
setxkmap -rules xfree86 -model logicordless -layout «us,cz,de» -option «grp:alt_shift_toggle»
Теперь допустим, что Вы более требовательны. Вам понравился пример выше, но Вы хотите его немного поменять. Представим, что Вы хотите несолько модифицировать чешскую раскладку, так, чтобы она отличалась от базовой. Тогда указанный отрывок кода из файла XF86Config может выглядеть примерно так:
Section «InputDevice»
Identifier «Keyboard1»
Driver «Keyboard»
Option «XkbModel» «logicordless»
Option «XkbLayout» «us,cz,de»
Option «XkbVariant» «,bksl,»
Option «XKbOptions» «grp:alt_shift_toggle»
EndSection
Кажется запутанным, однако это не так. Логика настройки вариантов раскладки точно такая же, что и для самих раскладок, здесь это означает, что первый и третий варианты настроек не меняются (остаются базовыми), а вторая настройка становится bksl (особый вариант настройки, в котором клавиша backspace выполняет расширенную функцию).
Тот же самый результат может быть получен такой командой Shell:
setxkmap -rules xfree86 -model logicordless -layout «us,cz,de» -variant «,bksl,» -option «grp:alt_shift_toggle»
Насколько мне известно, KDE плюет на раскладки X если у него включены свои, поэтому настройка раскладок X бесполезна. Можно отказаться от раскладок KDE, но тут есть свои грабли. Вот я установил X.ord 6.8.1 и решил мигрировать с gnome на afterstep, соответственно возник вопрос настройки переклбчения раскладок (хотя мне казалось gnome использовал X настройки).Вот фрагмент из моего конфигурационного файла X-ов:
Section «InputDevice»
Identifier «Keyboard1»
Driver «kbd»
Option «XkbRules» «xorg»
Option «XkbModel» «geniuscomfy2»
Option «XkbLayout» «us,ru»
Option «XkbOptions» «grp:ctrl_shift_toggle,altwin:meta_win,grp_led:scroll»
EndSection
С переключением на русский и обратно нет проблем, однако не могу справиться с неработоспособностью сочетаний клавиш типа ALT-H и глюками программы xclock (думаю не только этой прогаммы). Запускаю: xclock --brief -digital и вижу «ПППП» вместо времени.Сумею решить эти проблемы сообщу.Может кто сталкивался с аналогичными проблемами?
Readme про раскладки я тоже читал,но допиться с его помощью желаемого результа мне не удалось.
Я тоже сталкиваюсь с подобными проблемами.
Вот как мне кажется проблема то тут не в аплете.
Аплет просто показывает, что в настройках X сервера не все в порядке.
То есть настроен он неидеально (Имеется в виду X сервер)/
Вот тут этот аплет служит просто лакмусовой бумажкой.
Т.е. какие-то управляющие клавиши не рассматриваются X сервером, таковими, или в сочетании с другими клавишами. Я еще не дошел до чтения тех мест документации, где это объясняется. Вообще, чем дальше читаешь, начинаешь понимать, что придется перечитать еще массу всякой разной документации. С ужасом вижу, насколько я еще пока дремуч.
Да еще вдогон.
Как-то я попробовал поработать в Гноме. МНе на понарвилось и я перешел на KDE. Однако дело не в этом. Вот в Гноме аплет мне кажется идеальный (хотя смотря как на это посмотреть). Я его установил на панель и отключил команды, которыми он переключает клавиатуру. Просто он у меня использовался как средство аизуализации нажатия Ctrl-Shift. То же самое нужно и в KDE. Разработчики этого аплета просто перемудрили. В X уже есть само переключение раскладок клавиатур. Нужна только визуализация. Для этого аплет на панель. А затем просто отслеживать нажатие нужной клавиатурной комбинации. Однако такой авлет не вскроет неправильность настройки той части X сервера, которая имеет дело с клавиатурой.
Имеется и другой способ сконфигурировать клавиатуру.
Он опирается на пять базовых компонентах, которые задают физическую раскладку клавиатуры.
(Повторюсь еще, что это я сам так перевожу термин keyboard mapping).
В эти пять базовых компонент входят:
1. Клавишные коды (key codes) — трансляция скэн-кодов, генерируемых при нажатии клавиш в подходяющую для использования символическую форму. (Фактически иная форма записи скэн-кодов).
2. Типы (types) — спцификация, указывающая каким образом действуют различные комбинации модификаторв (наверное речь идет о клавишах, яввляющихся модификаторами).
3. Клавишные символы (key symbols) — трансляция символических клавишных кодов в реальные символы. (Пока непонятно, что имеется в виду, т.е. что транслируется понятно [см. пункт 1], а вот во что — пока не говорится, может быть в ASCII коды, ну что ж, читаем далее).
4. Геометрия (geometry) — описание физической геометрии клавиатуры.
5. Карты совместимости (Compatibility maps) — спецификация действия, выполняемой по нажатию каждой клавиши, чтобы сохранять совместимость с клиентскими приложениями, которые не могут использовать протокол xkb.
вот все бы так вопросы задавали, а потом отвечали на них :)
наступило бы полное благоденствие
А теперь это надо засунуть в FAQ
Теперь рассмотрим следующий пример
Section «InputDevice»
Identifier «Keyboard0»
Driver «Keyboard»
Option «XkbKeycodes» «xfree86»
Option «XkbTypes» «default»
Option «XkbSymbols» «en_US(pc104)+de+swapcaps»
Option «XkbGeometry» «pc(pc104)»
Option «XkbCompat» «basic+pc+iso9995»
EndSection
Эта конфигурация задает стандартную для XFree86 интерпретацию клавишных кодов, а также задает модификаторы, используемые по умолчанию (вот с этим я пока не разобрался, мне кажется, что именн тут и зарыта собака).
Таблица символов состоит расширенной раскладки US в ее вариации для клавиатуры, используемой на ПК плюс все клавиши для немецкой раскладки переопределяются соответствующим образом. Т.е. я так понимаю, что работают правильно (т.е. немецкий текст печатается).
Сразу задам вопрос, есть такой файл /etc/sysconfig/keyboard. В нем может быть указана такая строка, не помню точно, либо KBDTYEP=PC, либо KEYBOARDTYPE=PC. Вопрос такой, имеет ли это отношение к X. И если ничего там не указывать, то влияет ли это как-то на работу, или нет?
Далее по теме. Также здесь указывается, что логическое назначение клавиши Caps-lock и клавиши Control (может быть имеется в виду клавиша Ctrl) меняются местами. (Т.е. выходит, что клавиша Ctrl используется для смены регистра, а клавиша Caps для переключения раскладок, правильно ли я понял?). Стандартная геометрия клавиатуры (вообще этот параметр, как указывается в документации, требуется некоторым программам, для рисования клавиатуры на экране. Мне так кажется это используется, ну например, для людей с Dissabilities) представлена клавиатурой, в состав которой входит 104 клавиши. Карта соответствия выбрана такой, что позволяет задействовать схему basic, схему, в которой определенным образом интерпретируется клавиша Alt, а также схему iso9995 (что это такое, и откуда видно проклавишу Alt, пока не понятно, возможно об этом будет сказано далее в документации).
Господа, я все же жду Ваших комментариев и указаний на то, где в тексте имеются неправильности.
Пожалуйста, поправляйте, если, что не так.
КЛАВИШИ МОДИФИКАТОРЫ (далее просто модификаторы)
Модификаторами являются клавиши типа Shift, Control или Alt, которые используются для изменения нажатия других клавиш. Т.е для модификации нажатия остальных клавиш тем или иным образом. Модификаторы могут объединяться, образуя такие комбинации как Control+Shift+Alt. Обработка расширенных комбинаций из модификаторов, до некоторой степени ответственно за то, что пакет XKB является достаточно сложным для понимания.
На базовом уровне пакет XKB распознает восемь (8) модификаторв, явные имена которых Control, Shift и Lock клавиши и родовые клавиши Mod1-Mod5. Эти клавиши соответствуют клавишам в ядре X протокола и необходимо, чтобы они там присутствовали для того, чтобы устаревшие программы могли понимать, тчо происходит. Такие клавиши, как Alt отображаются на одну из Mod клавиш. Т.е одна из Mod клавиш отводится под клавишу Alt, или наоборот, кому-как удобно.
Базовые модификаторы понятны достаточно хорошо, но нам будет удобней ввести определенный уровень абстракции, чтобы Ва смогли говорить о модификаторах в зависимости от функции, которые ими выполняются, а не просто по имени, которая назначена той или иной клавише. Пакет XKB позволяет использовать виртуальные модификаторы, что представляет собой схему, при которой базовый модификатор или какая-либо комбинация базовых модификаторов отображается на поименованный виртуальный модификатор. Виртуальные модификаторы затем могут использоваться для описания поведения клавиатуры, для отделения реальных физических возможностей клавиатуры, которую Вы используете, от того или иного набора символов, которые Вы хотите на ней набирать. Типы и карты совместимости главным образом и отвечают за обработку этого аспекта использования клавиатуры в рамках пакета XKB.
Продолжение следует
Обязательно в FAQ.
Я думаю многим новичкам поможет.
А теперь немного практики. Итак у всех у нас имеется такая строчка в своем XF86Config или XF86Config-4 файле:
Option «XkbOptions» «grp:rctrl_toggle»\
Теперь зайдем в каталог /etc/X11/xkb/rules.
Там есть файл xfree86. Откроем этот файл и посмотрим его содержание в самом конце. Вы можете видеть перечерь различных опций в том числе и опцию наиболее часто используемую, а именно grp:ctrl_shift_toggle. (Я пока, например, использую опцию grp:rctrl_toggle). Однако, это не существенно для нашего рассмотрения. Суть вот в чем, я пробовал самые различные опции из этого файла. Т.е. моя строка XkbOptions выглядела самым различным образом. Хотя я пока не добился нужного результата. Но вот, что удалосб обнаружить. Прежде всего. Делал я это при отключенном аплете. Вообще как оказалось дело вобщем то не в этом аплете. Но после каждой замены и перезагрузки компьютера (Вообще достотчно наверно перезагружать X, но я чтобы наверняка — перещгружал компьютер) я обнаруживал, что на вкладке Keyboard Shorcuts, а далее уже на ее вкладке Modifier Keys, во фрейме X Modifier Mappings были изменения. Т.е. оказывалось, что вот эта самая строка,а именно XkbOptions, влияет на конфигурацию клавиш модификаторов. Каким образом я не выяснил еще. Однако интуитивно чувствую, что надо продолжать двигаться по этому пути.
Итак пока вывод состоит в том, что аплет переключения раскладок клавиатур не работает по Ctrl+Shift не потому, что он как бы баговый, а потому, что отсутствует достаточно корректная конфигурация клавиш модификаторов в X. Далее, простым экспериментом (просто тупым перебором возможностей из файла xfree86, находящегося в каталоге /etc/X11/xkb/rules) убеждаемся, что подобрать такую возможность нельзя. Те. самый простой способ конфигурирования клавиатуры на основе правил не позволяет задействовать Ctrl+Shift с этим аплетом.
Значит нужно использовать более sophisticated способ.
Возвращаюсь к поиску и к чтению соответствующей документации.
Может быть кому-то более умному удасться найти нужную комбинацию.
Кстати вот содержимое файла ctrl_shift_toggle.inc
# Ctrl-Shift toggle modes
control keycode 42 = AltGr_Lock
control keycode 54 = AltGr_Lock
А вот содержимое файла ctrl.inc
keycode 29 = Caps_Lock
keycode 58 = Control
keycode 97 = Compose
Пока не могу проинтерпретировать их содержание.
Сами эти файлы находятся в каталоге /usr/lib/kbd/keymaps/i386/include
Я тут все это почитал. Могу сказать только одно. Есть такая среда GNOME. У нее есть апплет keyboard switcher(Libgnome>=2.6.0) он работает напрямую с XF86Config через библиотеку libxkavalier. Так что можно произвести любые манипуляции с XF86Config отностельно раскладок, прямо из среды.
Не поверете но уже года два или три существует такой апплет http://kkbswitch.sourceforge.net/
который работает в kde и использует настройки для xkb, т.е то что написано в XF86Config.
Вот что у меня прописано в /etc/X11/XF86Config
Section «InputDevice»
Identifier «Keyboard0»
Driver «keyboard»
Option «XkbModel» «pc105»
Option «XkbLayout» «us,ru(winkeys)»
Option «XkbOptions» «grp:alt_shift_toggle,grp_led:scroll»
EndSection
kkbswitch использует эти строчки, т.е. по нажатию alt+shift у меня переключается раскладка, а в доке меняется значок языка, также можно раскладку переключать кликнув мышкой по значку языка. Все заработало с первого раза и до сих пор работает.
Очень простая в использовании программа
Пржлуйста укажите какой у Вас дистрибутив.
Где Вы брали пакет kkbswitch.
Какая версия X?
Ссылку, пожалуйста, указывайте на rpm пакет, а не просто на сайт.
Вы значете я и не спорю, может быть у Вас и работает, но я, когда заходил на тот сайт, который Вы указали и смотрел скриншоты этой программы, то там тоже видно, что дляработы этой программы необходимо указывать клавишу переключения. Поэтому меня и смущает этот пакет.
Подозреваю, что он у Вас работает из-за того, что у Вас оказались правильно настроенными X. А именно схема отображения модификаторов на реальные клавиши клавиатуры. Хотя Вы даже об этом и не знаете.
Понимаете суть то в чем. KDE использует для переключения настройки клавиатуры свой аплет. Этот аплет использует какие-то настройки X, какие-то не используетет и как непонятно. ВОобще если встать на сторону, что X — это реализация, а KDE интерфейс, то правильно бы было, чтобы вообще в схеме KDE Control center не было возможности указания клавиши переключения раскладок. KDE должно действительно подхватывать настройки из X, а не служить некой надстройкой к X. Все здесь дело осложняется тем, что если Вы внимательно посмотрите на код в чвоем файле XFree86Confir, то увдите, что там используеются так называемые опции grp. Т.е. на самом деле в X идет перключение групп, а не раскладок, как таковых, в одной группе может быть несколько раскладок. Правда, начиная с X 4.3.0 каждая раскладка находится в своей собственной группе. Вероятно тут просто разработчии KDE не успевают вносить эти изменения в свои программы.
Скажу честно я еще не совсем разобрался, что к чему тут.
В идеале необходимо получить нужную конфигурацию X так, чтобы можно было настроить аплет переключения раскладок по своему усмотрению. По возможности добиться этого так, чтобы не возникло каких-либо конфликтов с настройкой в GNOME.
Не знаю может быть в Xorg эти проблему уже будут решены.
Хотелось бы услышать мнения владельцев дистрибутивов Mandrake 10.1 и FedoraCore, в которых уже установлен Xorg.
Каков глобальный смысл двухстраничного цитирования различной общедоступной информации?
Каков смысл Вы спрашиваете, да просто привлечь как можно больше людей к этой теме. Может быть сообща и получиться. Ну а если в чем-то не разберусь или неправильно пойму, то надеюсь, что старшие товарищи поправят. К сожалению сайт, на котором я брал информацию пока временно недоступен. Жду, когда станет доступным.
Вообще из чтения документации становится понятным, что указание одних строк типа
Option «XkbModel» «pc105»
Option «XkbLayout» «us,ru(winkeys)»
Option «XkbOptions» «grp:alt_shift_toggle,grp_led:scroll»
оказывается недостаточно. Настроек наверно несколько тысяч, но где все они лежат.
Странно….. а мне всегда хватало…….
Это не имеет значения.
http://kkbswitch.sourceforge.net/
RPM-пакет можно и самому собрать, не полениться.
Если Х настроен неверно, то Х не работает.
К сведению, в Slackware 10.0 используется X.org. Моё мнение ты уже слышал — можно обойтись и без флажгка на панели.
Нихрена он не использует, это вполне самодостаточное существо, которое ломает тебе жизнь.
# оказывается недостаточно. #
Недостаточным для чего!?
Так все же каков глобальный смысл двухстраничного цитирования _различной общедоступной информации_?
Про то, как работает вся хня — надо читать RU.LINUX FAQ и далее по ссылкам. А тут пока воду в ступе толчете.