Awesome: tastaturlayout switch

Jeg bruger fantastisk som vinduesmanager under gnome (debian system) og jeg lavede en widget til at skifte tastaturlayout med denne kode:

-- 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 der er et alvorligt problem med tastaturadfærd. Når jeg skifter til ru-layout, fungerer ikke mine tastaturbindinger. Awesome bindinger fungerer ikke. F.eks. Fungerer vim-genveje ikke også osv. Hvordan kan jeg løse dette problem?

Svar

Dine tastaturbindinger fungerer ikke, fordi dit tastatur ikke længere har disse nøglesymboler.

Hvis du f.eks. vil have Alt + F gør noget, så har du brug for “F” i en eller anden nøgle. Men hvis du indlæser “ru” alene , så er der slet ingen “F” (eller noget latinsk bogstav).

Jeg tror, specielt når du har brug for at håndtere flere layouts , at det er meget bedre at lade X11 (gennem setxkbmap) gøre jobbet for dig; den måde, vinduesadministratorerne gør det på, er meget mere begrænset, som du har opdaget.

Du kan også prøve, da den forfærdelige widget synes at kalde setxkbmap, at ændre “ru” med “ru, os”, f.eks :

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

på den måde stables “us” -layoutet oven på “ru”, når det er indlæst, og tastaturet til “us” layout, mens det stadig ikke kan types direkte, vil ses af X11-laget, der håndterer nøglebindingerne.

Svar

Om AwesomeWM , fra dens FAQ :

Du skal bruge nøglekoder i stedet for nøglenavne som denne:

  1. Kør xev.
  2. Tryk på Udskriv -tasten.
  3. Læs output

    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. Opret ~ / skærmbilleder, installer scrot og tilføj følgende til rc.lua:

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

Nu kan du teste, at du kan oprette skærmbilleder med ethvert tastaturlayout.

Kommentarer

  • At ' bare er et fungerende eksempel. Pointen er at bruge nøglekoder

Svar

Jeg har bare været nødt til at tackle det samme problem, og løsningen, der er anført her, fungerede ikke. Til sidst fandt jeg xkb-switch , som fungerede ordentligt med fantastisk. Den har den ekstra bonus af 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 antages at være kommentar eller ej: dog efter at have læst og brugt @yotam “s kommentar (tak! du har fået min opstemme).

Jeg har besluttet at tage det til næste niveau ved at lappe xkb-switch for at tillade både -n og -p flag og ved at gøre det er muligt at skifte til næste layout og udskrive det. indtil fletning kan klones fra her . endelig flettet! kan findes over her .

Nu er det muligt at gøre switcheren lidt renere og hurtigere 🙂

-- 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() 

REDIGERING: for at lave setxkbmap for ikke at forstyrre skiftelayout med fantastiske tastebindinger, brug denne type kommando til at opsætte dit layout:

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

Det vil sikre, at der ikke er nogen ekstra muligheder tilbage fra den tidligere konfiguration ion.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *