Потрясающе: переключатель раскладки клавиатуры

Когда Вы создаете свои собственные файлы журнала, я думаю, что необходимо создать собственный API также.

6
06.04.2012, 20:10
4 ответа

Ваши клавиатурные привязки не работают, потому что Ваша клавиатура больше не имеет те keysyms.

Если Вы хотите иметь, например, Alt+F делают что-то, то Вам нужен "F" в некотором ключе. Но если Вы загружаете один только "рутений", затем нет никакого "F" вообще (ни никакая латинская буква).

Я думаю, особенно когда необходимо обработать несколько разметок, что намного лучше позволить X11 (через setxkbmap), делают задание для Вас; путем менеджеры окон делают это намного более ограничено, поскольку Вы обнаружили.

Можно также попробовать, поскольку ужасный виджет, кажется, называет setxkbmap, изменяет "рутений" с "рутением, нас", например:

kbdcfg.layout = { { "us", "" }, { "ru,us", "phonetic" } }

тем путем "мы", расположение будет сложено сверху того "рутения" при загрузке, и keysysms "нас" расположение, в то время как все еще не непосредственно typeable будут замечены уровнем X11, который обрабатывает привязки клавиш.

4
27.01.2020, 20:27

О AwesomeWM, от его FAQ:

Необходимо использовать коды клавиши, вместо keynames, как это:

  1. Выполненный xev.
  2. Нажмите клавишу Print.
  3. Считайте вывод

    KeyPress event, serial 34, synthetic NO, window 0x1200002,
    root 0x291, subw 0x0, time 1510129, (471,293), root:(472,316),
    state 0x0, keycode **107** (keysym 0xff61, Print), same_screen YES,
    ...
    
  4. Создайте ~ / снимки экрана, установите scrot и добавьте следующее к rc.lua:

    awful.key({ }, "#107", function () awful.util.spawn("scrot -e 'mv $f ~/screenshots/ 2>/dev/null'") end),
    

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

2
27.01.2020, 20:27
  • 1
    Это - просто рабочий пример. Точка должна использовать коды клавиши –  igorepst 02.07.2013, 22:21

Мне только что пришлось решить ту же проблему, и решение, указанное здесь, не сработало. В конце концов я нашел xkb-switch , который нормально работал с awesome. Он имеет дополнительный бонус в виде упрощенного кода в файле rc.lua .

-- language switcher
kbdcfg = {}
kbdcfg.cmd = "xkb-switch -n"
kbdcfg.widget = wibox.widget.textbox()

kbdcfg.current = io.popen("xkb-switch"):read("*a")
kbdcfg.widget:set_text(kbdcfg.current)
kbdcfg.switch = function()
    os.execute(kbdcfg.cmd)
    kbdcfg.current = io.popen("xkb-switch"):read("*a")
    kbdcfg.widget:set_text(kbdcfg.current)
end
1
27.01.2020, 20:27

Не уверен, предполагается, что это комментарий или нет: после прочтения и использования комментария @ yotam (спасибо! Вы получили мой голос за).

Я решил перейти на следующий уровень, установив патч xkb-switch, чтобы разрешить использование флагов -n и -p, и тем самым сделать возможным переключение на следующий макет и его печать. до слияния можно клонировать из здесь . наконец-то слились! можно найти на здесь .

Теперь можно сделать переключатель немного чище и быстрее :)

-- Language switcher
kbdcfg = {}
kbdcfg.widget = wibox.widget.textbox()
kbdcfg.switch = function ()
  current_kb = io.popen("xkb-switch -p -n"):read("*a")
  kbdcfg.widget:set_text(current_kb)
end
kbdcfg.switch()

РЕДАКТИРОВАТЬ: чтобы setxkbmap не мешал переключению макета потрясающими привязками клавиш, используйте такую ​​команду для настройки макета:

setxkbmap -layout "us,il" -option ""

Это убедится, что от предыдущей конфигурации не осталось никаких дополнительных опций.

1
27.01.2020, 20:27

Теги

Похожие вопросы