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ä:
- Suorita
xev
. - Paina Tulosta -näppäintä.
-
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, ...
-
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 a lukemisen ja käyttämisen jälkeen > (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.