Mahtava: näppäimistön asettelukytkin

Käytän mahtavaa ikkunanhallintaohjelmana gnomen (debian-järjestelmä) alla ja tein widgetin vaihtaaksesi näppäimistöasettelua tällä koodilla:

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

Se toimii, mutta näppäimistön toiminnassa on vakava ongelma. Kun vaihdan ru-asetteluun, kaikki näppäimistön sidokset eivät toimi. Mahtavat siteet eivät toimi. Esimerkiksi vim-pikakuvakkeet eivät myöskään toimi jne. Kuinka voin ratkaista tämän ongelman?

Vastaa

Näppäimistösi sidokset eivät toimi, koska näppäimistölläsi ei enää ole näitä avainsanoja.

Jos haluat esimerkiksi Alt + F tee jotain, sitten tarvitset ”F” jossakin näppäimessä. Mutta jos lataat ”ru” yksin , F-kirjainta ei ole lainkaan (eikä latinalaisia kirjaimia).

Luulen, varsinkin kun sinun on käsiteltävä useita asetteluja , että on paljon parempi antaa X11: n (setxkbmapin kautta) tehdä työ puolestasi; tapa, jolla ikkunaohjaimet tekevät sen, on paljon rajoitetumpi kuin olet havainnut.

Voit myös yrittää, koska awfull-widget näyttää kutsuvan setxkbmap, vaihtaa ”ru” muotoon ”ru, us”, esim. :

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

tällä tavalla ”us” -asettelu pinotaan ”ru” -alustan päälle ladattaessa ja ”us” -näppäimen näppäimet asettelun, vaikka se ei vieläkään ole suoraan kirjoitettavissa, X11-kerros, joka käsittelee avainten sidonnat, näkee.

Vastaa

Tietoja AwesomeWM: stä , sen usein kysytyistä kysymyksistä :

Käytä avainkoodeja avaimenimien sijaan, kuten tämä:

  1. Suorita xev.
  2. Paina Tulosta -näppäintä.
  3. Lue tulosteet

    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. Luo ~ / kuvakaappauksia, asenna scrot ja lisää seuraava rc.lua:

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

Nyt voit testata, että voit luoda kuvakaappauksia millä tahansa näppäimistöasettelulla.

Kommentit

  • Se ' on vain toimiva esimerkki. Tarkoituksena on käyttää avainkoodeja

Answer

Minun on vain pitänyt puuttua samaan ongelmaan, ja tässä lueteltu ratkaisu ei toiminut. Löysin lopulta xkb-switch , joka toimi oikein mahtavan kanssa. Sillä on lisätty yksinkertaistetun koodin bonus rc.lua -tiedostossa.

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

Vastaa

En ole varma, oletetaanko sen olevan kommentti vai ei: lukemisen ja @yotam ”-kommentin (kiitos! olet saanut ylimäisen ääneni).

Olen päättänyt viedä sen seuraavalle tasolle korjaamalla xkb-switchin sallimaan sekä -n- että -p-liput, ja tekemällä tämän on mahdollista siirtyä seuraavaan asetteluun ja tulostaa se. kunnes yhdistäminen voidaan kloonata täältä . lopulta yhdistetty! löytyy yli täällä .

Nyt on mahdollista tehdä kytkimestä hieman puhtaampi ja nopeampi 🙂

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

MUOKKAA: jotta setxkbmap ei häiritse asettelun vaihtamista mahtavilla avainsidoksilla, aseta asettelu käyttämällä tällaista komentoa:

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

Tämä varmistaa, ettei edellisestä konfiguraatiosta ole jäänyt mitään ylimääräisiä vaihtoehtoja ioni.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *