Jako správce oken používám v gnome (debian systém) awesome a vytvořil jsem widget pro přepnutí rozložení klávesnice tímto kódem:
-- 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),
Funguje to, ale s chováním klávesnice je vážný problém. Když přepnu na rozložení ru, nefunguje moje vazba klávesnice. Úžasné vazby nefungují. Například zkratky vim také nefungují atd. Jak mohu tento problém vyřešit?
Odpovědět
Vazby na klávesnici nefungují, protože na klávesnici již tyto klávesové zkratky nejsou.
Pokud chcete mít například Alt + F něco udělejte, pak potřebujete v nějakém klíči „F“. Pokud ale načtete „ru“ samostatně , pak vůbec neexistuje „F“ (ani žádné latinské písmeno).
Myslím, zvláště když potřebujete zpracovat více rozvržení , že je mnohem lepší nechat X11 (prostřednictvím setxkbmap) udělat práci za vás; způsob, jakým to správci oken dělají, je mnohem omezenější, jak jste zjistili.
Můžete také zkusit, jak se zdá, že strašlivý widget volá setxkbmap, změnit „ru“ na „ru, us“, např. :
kbdcfg.layout = { { "us", "" }, { "ru,us", "phonetic" } }
tímto způsobem bude rozložení „us“ naskládáno na horní část „ru“ po načtení a klíčové systémy „us“ Rozložení, i když stále není přímo typovatelné, bude viditelné pro vrstvu X11, která zpracovává klíčové vazby.
Odpovědět
O AwesomeWM , z Častých dotazů :
Místo klíčových názvů byste měli používat klíčové kódy, například:
- Spusťte
xev
. - Stiskněte klávesu Tisk .
-
Přečíst výstup
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, ...
-
Vytvořte ~ / screenshoty, nainstalujte scrot a přidejte do rc.lua následující:
awful.key({ }, "#107", function () awful.util.spawn("scrot -e "mv $f ~/screenshots/ 2>/dev/null"") end),
Nyní můžete vyzkoušet, že můžete vytvářet snímky obrazovky s libovolným rozložením klávesnice.
Komentáře
- ' je to jen funkční příklad. Jde o to použít klíčové kódy
Odpovědět
Jen jsem se musel vypořádat se stejným problémem a zde uvedené řešení nefungovalo. Nakonec jsem našel xkb-switch , který správně fungoval s úžasnou. Má přidaný bonus zjednodušeného kódu v souboru 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
Odpověď
Nejste si však jisti, zda to má být komentář nebo ne: po přečtení a použití @yotam „s komentáře (děkuji! dostal jste můj souhlas).
Rozhodl jsem se posunout to na další úroveň, opravou xkb-switch povolit příznaky -n i -p a tím vytvořit je možné přepnout na další rozvržení a vytisknout ho. dokud nebude možné sloučit klonování zde . konečně sloučeno! najdete přes zde .
Nyní je možné přepnout přepínač o něco čistěji a rychleji 🙂
-- 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()
EDIT: chcete-li, aby setxkbmap nerušil přepínání rozložení úžasnými klávesovými zkratkami, použijte tento druh příkazu k nastavení rozložení:
setxkbmap -layout "us,il" -option ""
Tím zajistíte, že z předchozího konfigurátoru nezůstanou žádné další možnosti ion.