itu*_*tun 8 keyboard-shortcuts keyboard-layout awesome
我在 gnome(debian 系统)下使用 awesome 作为窗口管理器,我制作了一个小部件来通过以下代码切换键盘布局:
-- Keyboard map indicator and changer
kbdcfg = {}
kbdcfg.cmd = "setxkbmap"
kbdcfg.layout = { { "us", "" }, { "ru", "phonetic" } }
kbdcfg.current = 1 -- us is our default layout
kbdcfg.widget = widget({ type = "textbox", align = "right" })
kbdcfg.widget.text = " " .. kbdcfg.layout[kbdcfg.current][1] .. " "
kbdcfg.switch = function ()
kbdcfg.current = kbdcfg.current % #(kbdcfg.layout) + 1
local t = kbdcfg.layout[kbdcfg.current]
kbdcfg.widget.text = " " .. t[1] .. " "
os.execute( kbdcfg.cmd .. " " .. t[1] .. " " .. t[2] )
end
-- Mouse bindings
kbdcfg.widget:buttons(awful.util.table.join(
awful.button({ }, 1, function () kbdcfg.switch() end)
))
-- Alt + Right Shift switches the current keyboard layout
awful.key({ "Mod1" }, "Shift_R", function () kbdcfg.switch() end),
Run Code Online (Sandbox Code Playgroud)
它有效,但是键盘行为存在严重问题。当我切换到 ru 布局时,我的键盘绑定不起作用。很棒的绑定不起作用。例如,vim 快捷方式也不起作用等等。我该如何解决这个问题?
您的键盘绑定不起作用,因为您的键盘不再具有这些键符号。
例如,如果您想让Alt+F做某事,那么您需要在某个键上输入“F”。但如果您单独加载“ru” ,则根本没有“F”(也没有任何拉丁字母)。
我认为,特别是当您需要处理多个布局时,最好让 X11(通过 setxkbmap)为您完成这项工作;正如您所发现的,窗口管理器的执行方式要有限得多。
您也可以尝试,因为可怕的小部件似乎调用 setxkbmap,将“ru”更改为“ru,us”,例如:
kbdcfg.layout = { { "us", "" }, { "ru,us", "phonetic" } }
Run Code Online (Sandbox Code Playgroud)
这样,“us”布局在加载时将堆叠在“ru”布局的顶部,并且“us”布局的键系统虽然仍然不能直接输入,但将被处理键绑定的 X11 层看到。
归档时间: |
|
查看次数: |
13958 次 |
最近记录: |