LINUX.ORG.RU

XKB. Переключение пользовательской раскладки не работает

 ,


0

1

Создал свою раскладку, которая располагается в пользовательском каталоге (почему - отдельная тема).
Закинул её в $HOME/.config/xkb, туда же докинул необходимые модули symbols, keycodes, etc.
И подключил её посредством keymap и xkbcomp
Структура файлов

$HOME/.config/xkb/[br]
/compat[br]
/geometry[br]
/keycodes[br]
/keymap[br]
/symbols[br]
/types[br]
Keymap-файл, в котором размещены объявления - [br]
/mykeymap:[br]
xkb_keymap "mymap" {[br]
  xkb_compat {...};[br]
  xkb_geometry {...};[br]
  xkb_keycodes {...};[br]
  xkb_types {...};[br]
  xkb_symbols {...};[br]
};
xkbcomp -I$HOME/.config/xkb $HOME/.config/xkb/keymap.xkb $DISPLAY
переключение раскладки настроено инструкцией в keymap include «capslock(grouplock)»

Необходимые файлы в /compat имеются. Никакие другие комбинации так же не работают.

В чём может быть причина и что возможно сделать?

Попробуйте указать xkbcomp опцию ″-I″ без аргументов, чтобы он не лез к дефолтным файлам X-сервер, может у вас где опечатка и берётся другой файл.

mky ★★★★★
()
Ответ на: комментарий от Dreamdrawer

Что не указал?

Ну я же написал, что́. (А сперва и самому́ на вывод посмотреть неплохо, вдруг увидите проблему.

все описал

Кстати, да. Сколько не спрашиваю людей, на кой черт они описывают и пересказывают вместо того, чтобы *привести*, никто не отвечает. Может быть, вы ответите?

Zmicier ★★★★★
()
Ответ на: комментарий от Zmicier

Может быть, вы ответите?

[флуд] С удовольствием попытаюсь ответить, потому как часто сталкиваюсь с подобным недопониманием. Дело в том, что человек, когда пишет на этот форум, как правило, делает это потому, что перепробовал все известные ему варианты решения проблемы и перечитал все результаты поиска из гугла, которые только смог придумать. Естесственно уровень грамотности запросов может варьироваться в зависимости от задачи, и совершенно точно невозможно одинаково хорошо разбираться во всех узлах столь сложной, многокомпонентной системы как линукс, тем более. Так вот, очевидные вещи для физика-ядерщика будут совершенно не очевидны для биоинженера, что не делает одного глупее другого.
Случаются моменты, когда проблему попросту не понимаешь, не знаешь даже с какой стороны к ней подойти, что гуглить и задавая вопросы на форумах, понятия не имеешь, какая именно информация может потребоваться для подсказки решения или совета. Потому пытаешься изложить всё то, что для тебя является относящемся к делу.
Я ещё мог бы понять, когда на лаконичный вопрос о том, как сделать то-то и то-то, не указав исходных данных вообще, получаешь столь же лаконичный ответ «про телепатов» или такую же общую формулировку команды. Но вроде бы я достаточно честно, по крайней мере попытался изложить суть вопроса. Если есть какие то уточняющие вопросы, то без проблем уточню.

Зачастую, кинутая в ответ команда без пояснений, ставит в тупик. Вариантов интерпритации смысла команды подразумеваться может три:
1. команду необходимо выполнить как она дана, и это будет являться решением заданного вопроса;
2. команду необходимо выполнить и выдать результат её работы;
3. команду необходимо выполнить указав собственные параметры (тут не всегда знаешь, что именно и как указывать);
В данном случае, в мою, и без того замороченную этим XKB голову, даже не пришла такая мысль, что бы посмотреть на вывод, я думал о том, как же эту команду прикрутить к запуску моей конфигурации.
Поэтому могу обратиться ровно с тем же вопросом про телепатов - что именно подразумевалось под командой, данной без инструкций и пояснений? Ведь это достаточно не тривиальная задача, которую каждый линуксоид решает по нескольку раз в день. [/флуд]
Вывод команды мне ни о чём не намекнул.

Dreamdrawer
() автор топика
Ответ на: комментарий от Dreamdrawer

[флуд]

Флуда много, толку мало.

Дело в том, что человек, когда пишет на этот форум, как правило, делает это потому, что перепробовал все известные ему варианты решения проблемы и перечитал все результаты поиска из гугла, которые только смог придумать.

Обычно всё происходит наоборот. Человек, когда пишет на форум (любой), пальцем не пошевелил чтобы решить или понять проблему самостоятельно, и пишет что-то вроде «Ничего не работает. Как починить?» и при этом уверен что его личные проблемы кто-то обязан решать.

Зачастую, кинутая в ответ команда без пояснений, ставит в тупик. Вариантов интерпритации смысла команды подразумеваться может три…

Вот и вы ожидаете, что кто-то обязан вам всё разжевать. Вам дали конец нити, а разматывать клубок ваших проблем — в ваших же интересах. Вы можете можете спросить про телепатов, но не забывайте чья это проблема и кому нужно её решение. У вас есть три интерпретации? Попробуйте все три по очереди. Всё ещё непонятно? Спрашивайте дальше.

Вот Zmicier спросил у вас:

Сколько не спрашиваю людей, на кой черт они описывают и пересказывают вместо того, чтобы *привести*, никто не отвечает. Может быть, вы ответите?

Ответа не последовало, хотя намёк совершенно прозрачный. Я тоже спрошу: вы, когда болеете, в поликлинику на анализ мочу сдаёте, или же по телефону описываете лаборанту свои выделения?

Необходимые файлы в /compat имеются.

Блажен кто верует. Я не верю. Могу только ещё раз спросить: На кой чёрт вы описываете и перессказываете вместо того, чтобы *привести*?

Ведь это достаточно не тривиальная задача, которую каждый линуксоид решает по нескольку раз в день.

debugger ★★★★★
()
Последнее исправление: debugger (всего исправлений: 1)
Ответ на: комментарий от Zmicier

Мне лень копипастить, думаю вы сами в состоянии прочитать man по этой команде, особенно второй абзац описания опции ″-I″, где объясняется как и зачем её указывать без аргументов.

mky ★★★★★
()
Ответ на: комментарий от Dreamdrawer

подразумеваться может три:

А ещё есть четвёртый, прочитать man по команде, особенно уделить внимание перечисленным опциям.

эту команду прикрутить к запуску моей конфигурации.

Это наводит на странные размышления. Вы на время поиска проблем ″xkbcomp″ разве не из терминала запускаете?

mky ★★★★★
()
Ответ на: комментарий от Dreamdrawer

Если ты запустишь xkbcomp с ключиком -xkb, то получишь свою карту клавиатуры в человекочитаемом виде (только не запускай это в ~/.config/xkb, потому что ketmap.xkb будет затёрт):

$ xkbcomp -xkb -I$HOME/.config/xkb $HOME/.config/xkb/keymap.xkb
$ less keymap.xkb 

И там можно увидеть кое-что интересное:

<...>
xkb_symbols "pc+rus(tw)+eng(eng)+inet(evdev)" {

    name[group1]="English (US)";
    name[group2]="Russian (typewriter)";
<...>
    key <AD01> {
        type= "ALPHABETIC",
        symbols[Group1]= [               q,               Q ]
    };
<...>

То есть имена-то даются двум группам, но никаких символов во второй группе не определено (я не вижу symbols[Group2]=[...]). Так как вторая группа фактически отсутствует, то и переключение не даёт эффекта.

Вторую группу ты загружаешь неправильно. Надо вот так (в *твоём* файле keymap.xkb):

xkb_symbols   {
        include "pc+rus(tw):2+eng(eng)+inet(evdev)"
        include "capslock(grouplock)"
        include "compose(rctrl)"
};

Обрати внимание на двоеточие и двойку.

А вообще непонятно зачем ты всё это делаешь. Чтобы сделать свою раскладку, обычно хватает одного-двух файлов, необязательно копировать половину usr/share/X11/xkb.

А теперь контрольный вопрос в голову: можно ли понять в чём ошибка, располагая твоим первым сообщением? Напоминаю твоё шедевральное описание проблемы:

xkb_keymap "mymap" {[br]
  xkb_compat {...};[br]
  xkb_geometry {...};[br]
  xkb_keycodes {...};[br]
  xkb_types {...};[br]
  xkb_symbols {...};[br]
};

В каждой строчке только точки, догадайся, мол, сама.

debugger ★★★★★
()
Последнее исправление: debugger (всего исправлений: 2)
Ответ на: комментарий от debugger

Кстати, два варианта, мой:

$ xkbcomp -xkb -I$HOME/.config/xkb $HOME/.config/xkb/keymap.xkb
$ cat keymap.xkb

и Zmicier:

$ xkbcomp -I$HOME/.config/xkb $HOME/.config/xkb/keymap.xkb $DISPLAY
$ xkbcomp $DISPLAY -

в данном случае дают одинаковый результат, вкурив который можно было понять проблему.

debugger ★★★★★
()
Ответ на: комментарий от debugger

Огромное спасибо! Всё получилось!
Да, признаю, по моим первоначальным данным мало что сказать возможно. Но ещё раз повторяю - не от лени не пишу, а по причине незнания/непонимания того, что выкладывать надо, а что нет.
Сам бы я не додумался - встерчал, но не понимал зачем двоеточие после имени раскладки, и как то нигде не встречал пояснений по этому поводу. Даже интересно, если не сложно, укажи пожалуйста откуда тебе стало известно об этом способе указания группы? У Паскаля этого не нашёл.

непонятно зачем всё это делаешь. Чтобы сделать свою раскладку, обычно хватает одного-двух файлов, необязательно копировать половину usr/share/X11/xkb.

Да это я для того, что бы исключить ошибку, где нить заваляется инструкция include, а файл отсутствовать будет. Для эксперементов исключительно. Теперь, разобравшись, разгрёб всё лишнее - в итоге у меня своих пять файлов осталось - rus, eng, pc, mod и srvr_ctrl.
Ещё раз спасибо, очень помогли!

Под занавес. Навряд ли здесь возможно что-либо сказать, но на всякий случай поделюсь. Думал с раскладками что то напортачил - Double Commander перестал понимать Ctrl перевешанный на Caps, некоторые другие приложения частично перестали понимать связку Ctrl+Shift. Причём связка с правым шифтом работает корректно, но опять же, не везде. Полтергейст. После продолжительного сношения, подключив другую клавиатуру, оказалось дело только в моей. Точнее на двух из трёх проблема повторилась. xev выдаёт корректные keycode и keysym значения клавиш. Что там может быть не так? содержимое директории xkb

Dreamdrawer
() автор топика
Ответ на: комментарий от Dreamdrawer

Сам бы я не додумался - встерчал, но не понимал зачем двоеточие после имени раскладки, и как то нигде не встречал пояснений по этому поводу. Даже интересно, если не сложно, укажи пожалуйста откуда тебе стало известно об этом способе указания группы? У Паскаля этого не нашёл.

Нашёл вот так:

$ setxkbmap en,ru -print
debugger ★★★★★
()
Последнее исправление: debugger (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.