Jeg bruker kjempebra som vindusbehandling under gnome (debian system) og jeg lagde en widget for å bytte tastaturoppsett med denne koden:
-- 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),
Det fungerer, men det er et alvorlig problem med tastaturadferd. Når jeg bytter til ru-layout, fungerer ikke tastaturbindingene mine. Fantastiske bindinger fungerer ikke. For eksempel fungerer ikke vim-snarveier også osv. Hvordan kan jeg løse dette problemet?
Svar
Tastaturbindingene dine fungerer ikke fordi tastaturet ikke lenger har disse nøkkelen.
Hvis du for eksempel vil ha Alt + F gjør noe, så trenger du «F» i noen nøkler. Men hvis du laster «ru» alene , er det ikke noe «F» i det hele tatt (og heller ikke noe latinsk bokstav).
Jeg tror, spesielt når du trenger å håndtere flere oppsett. , at det er mye bedre å la X11 (gjennom setxkbmap) gjøre jobben for deg; måten vindusadministratorene gjør det på er mye mer begrenset som du har oppdaget.
Du kan også prøve å endre «ru» med «ru, oss», f.eks. den forferdelige widgeten ser ut til å kalle setxkbmap. :
kbdcfg.layout = { { "us", "" }, { "ru,us", "phonetic" } }
på den måten vil «us» -oppsettet stables oppå «ru» når det er lastet inn, og nøkkelsymbolene til «oss» layout, men fremdeles ikke direkte skrivbart, vil bli sett av X11-laget som håndterer nøkkelbindingene.
Svar
Om AwesomeWM , fra FAQ :
Du bør bruke nøkkelkoder, i stedet for nøkkelnavn, slik:
- Kjør
xev
. - Trykk Skriv ut -tasten.
-
Les utdata
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, ...
-
Opprett ~ / skjermbilder, installer scrot og legg til følgende i rc.lua:
awful.key({ }, "#107", function () awful.util.spawn("scrot -e "mv $f ~/screenshots/ 2>/dev/null"") end),
Nå kan du teste at du kan lage skjermbilder med hvilket som helst tastaturoppsett.
Kommentarer
- At ' bare er et fungerende eksempel. Poenget er å bruke nøkkelkoder
Svar
Jeg måtte bare takle det samme problemet, og løsningen som er oppført her, fungerte ikke. Jeg fant til slutt xkb-switch som fungerte skikkelig med fantastisk. Den har den ekstra bonusen med forenklet kode i rc.lua
-filen.
-- 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
Svar
Ikke sikker på om det antar å være kommentar eller ikke, men etter å ha lest og brukt @yotam «s kommentar (takk! du har fått min oppstemme).
Jeg har bestemt meg for å ta det til neste nivå, ved å lappe xkb-bryteren for å tillate både -n og -p flagg, og ved å lage det er mulig å bytte til neste layout og skrive den ut. til fletting kan klones fra her . endelig slått sammen! finner du over her .
Nå er det mulig å gjøre bryteren litt renere og raskere 🙂
-- 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: for å lage setxkbmap for ikke å forstyrre bytte av layout med fantastiske tastebindinger, bruk denne typen kommando for å sette opp layout:
setxkbmap -layout "us,il" -option ""
Det vil sørge for at ingen ekstra alternativer er igjen fra forrige konfigurasjon ion.