LINUX.ORG.RU

Awesome WM: странное поведение в русской раскладке

 , ,


3

1

Разбираюсь с Awesome, и кажется странным, что на горячие клавиши в русской раскладке он реагирует нормально, НО не реагирует на действия в виджетах/менюшках. Поясню, о чем речь:

Modkey + J/K - переключение клиентов. Оно же работает и в русской раскладке. Пркерасно.

Esc в стандартном меню - закрытие меню, очевидно. Не работает в русской раскладке (sic!). А еще не работают клики мышкой на панели и в меню, опять же, если включена русская раскладка.

Меня мучает вопрос: WTF?! Если xev показывает одни и те же коды клавиш в разных раскладках, а Esc и левая кнопка мыши вообще не зависят от языка.

Нашел вот этот тред, там ссылались на баг xorg-xkbcomp, закрытый год назад, и рекомендовали откатиться на старую версию. Но это было год назад, баг отмечен как закрытый, а проблема на месте. Я что-то делаю не так?

Есть идеи, как лечить?

И еще, до кучи: в качестве Mod1 у меня срабатывают оба Alt, но хочу использовать левый и правый как разные модификаторы. Посмотрел их названия через xev, но awesome не считает «Alt_L» за модификатор. В доках вычитал вот это:

Valid modifiers are: Any, Mod1, Mod2, Mod3, Mod4, Mod5, Shift, Lock and Control.

Не понятно, что именно есть Mod1..5. Опытным путем я понял что Mod3 у меня вообще ни на что не реагирует, например. Можно как-то явно назначить произвольные клавиши на ModX? В общем, хочется нормальных модификаторов (левые-правые alt, ctrl, shift). Не может же не быть решения :)

PS: ArchLinux @ Lenovo ThinkPad X220

PPS: Может, кстати, можно биндить клавиши не с модификатором, а просто комбинацию клавиш? Документация к модулю awful.key для меня не очень понятна, в плане, как этим пользоваться...



Последнее исправление: CYB3R (всего исправлений: 3)

Либо делай даунгрейд xorg-xkbcomp, как сказано выше. Либо попробуй немного магии:

xkbcomp $DISPLAY - | egrep -v "group . = AltGr;" | xkbcomp - $DISPLAY
doraneko
()

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

awesome 4.6.3 xkbcomp 1.2.3

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

Дай машиной времени попользоваться.☺

При установке поставил из current, а обновить забыл. Теперь вот вспомнил.

zinfandel ★★
()

Вопрос в догонкку: темы куросора запилили наконец-то?

anonymous
()
Ответ на: комментарий от kernelpanic

До сих пор не пофиксили чтоли?

J ★★★★
()

Запилил переключение раскладки по ctrl+1 ctrl+2 ctrl+3. Виджеты стали на мышь реагировать в русской раскладке, зато перестали работать хоткеи в раскладке отличной от us.

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

downgrade xorg-xkbcomp

спасибо, похоже, это единственное решение пока :)

rast1234
() автор топика

А как все-таки использовать нормальные модификаторы, кто-нибудь знает?

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

Надо на 1.2.3, насколько я понимаю, но я не нашел. И как-то не радует перспектива маяться потом с зависимыми пакетами. Зато есть вот это, вроде должно решать проблему, но я не умею патчи накатывать, чтобы потом ничего не отваливалось :)

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

Ты пробовал выполнить?

xkbcomp $DISPLAY - | egrep -v "group . = AltGr;" | xkbcomp - $DISPLAY
Просто мне помогло. Костыль, конечно, но работает.

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

Попробовал понять, как это будет работать, понял что костыль и что не хочу связываться с xkbcomp, а то еще то-нибудь отвалится)) За решение, конечно, спасибо, но попробую лучше научиться патчить (см. предыдущий пост).

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

Проблема решается комментированием соответствующих строк в /usr/share/X11/xkb/compat/basic (комманда выше давалась именно для этого):

group 2 = AltGr;
group 3 = AltGr;
group 4 = AltGr;

Вообще говоря, этот баг и есть костыль, подробности тут: https://bugs.freedesktop.org/show_bug.cgi?id=50611#c6

А насчет биндов, так это да, можно практически на любую комбинацию клавиш назначать команду:
1. Открываем конфиг
2. Ищем в нем строку «globalkeys = awful.util.table.join(»
3. Аккуратно вставляем свой бинд в эту таблицу, например:

«awful.key({ }, „XF86AudioMute“, function () os.execute(„amixer -q set Master toggle“) vicious.force({volwidget}) end),»

anonymous
()
8 мая 2014 г.

У себя на дебьяне настроил переключение по r_alt. Есть такая штука, как LED bitmask, тем более на нетбуке нет индикаторов Num, Caps, ScrLk. Посмотреть её можно по команде

xset -q | awk '/LED/ {print $10}'

которая покажет, что в поле LED. Так уж получилось, что на русской раскладке по умолчанию зажигается ScrLk.
А всего состояний, которые нам нужны - 8. Но не знаю, как в других дистрибутивах.

-- Keyboard Indicator
kbdind = {}
kbdind.pic_path = "/home/user/.config/awesome/"
kbdind.led_code = {"00000000\n","00001004\n","00000001\n","00001005\n",
                    "00000002\n","00001006\n","00000003\n","00001007\n"}
kbdind.layout = { "us", "ru", "US", "RU", "us+num", "ru+num","US+NUM", "RU+NUM" }
kbdind.pic = { kbdind.pic_path .. "us_small.png", kbdind.pic_path .. "ru_small.png" }
kbdind.current = 1
kbdind.widget = widget({ type = "textbox", align = "right" })
kbdind.widget.text = "      " .. kbdind.layout[kbdind.current]
kbdind.widget.bg_image = image(kbdind.pic[1])
kbdind.switch = function()
kbdind.current_code = ''
kbdind.current_code = awful.util.pread("xset -q | awk '/LED/ {print $10}'")
for z = 1, 8, 1 do
    if kbdind.current_code == kbdind.led_code[z] then
        kbdind.current = z
    end
end
if kbdind.current % 2 == 0 then
    kbdind.widget.bg_image = image(kbdind.pic[2])
else kbdind.widget.bg_image = image(kbdind.pic[1]) end
local t = "      " .. kbdind.layout[kbdind.current]
kbdind.widget.text = t
end

Конечно же он переделан из переключалки, которую можно найти везде! Хотя и глупо. И никаких переключений мышью.

const92
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.