Fantastisk: bryter for tastaturoppsett

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:

  1. Kjør xev.
  2. Trykk Skriv ut -tasten.
  3. 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, ... 
  4. 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.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *