Folosesc minunat ca manager de ferestre sub gnome (sistem debian) și am creat un widget pentru a comuta aspectul tastaturii prin acest cod:
-- 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),
Funcționează, totuși există o problemă serioasă cu comportamentul tastaturii. Când trec la aspectul ru, nu funcționează legăturile mele de tastatură. Legăturile minunate nu funcționează. De exemplu, comenzile rapide vim nu funcționează și etc. Cum pot rezolva această problemă?
Răspunde
Legăturile tastaturii dvs. nu funcționează, deoarece tastatura nu mai are acele cuvinte cheie.
Dacă doriți să aveți, de exemplu, Alt + F faceți ceva, apoi aveți nevoie de „F” în o anumită cheie. Dar dacă încărcați „ru” singur , atunci nu există deloc „F” (nici vreo literă latină).
Cred, mai ales când trebuie să gestionați mai multe aspecte , că este mult mai bine să lăsați X11 (prin setxkbmap) să facă treaba pentru dvs.; felul în care o fac managerii de ferestre este mult mai limitat așa cum ați descoperit.
Puteți încerca, de asemenea, deoarece widgetul extraordinar pare să numească setxkbmap, să schimbați „ru” cu „ru, noi”, de ex. :
kbdcfg.layout = { { "us", "" }, { "ru,us", "phonetic" } }
în acest fel, aspectul „noi” va fi stivuit deasupra celui „ru” atunci când este încărcat, iar tastele „noi” aspectul, deși nu este direct tipabil, va fi văzut de stratul X11 care gestionează legăturile de taste.
Răspuns
Despre AwesomeWM , din Întrebări frecvente :
Ar trebui să utilizați coduri de taste, în loc de nume de chei, astfel:
- Rulați
xev
. - Apăsați tasta Print .
-
Citiți rezultatul
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, ...
-
Creați ~ / capturi de ecran, instalați scrot și adăugați următoarele la rc.lua:
awful.key({ }, "#107", function () awful.util.spawn("scrot -e "mv $f ~/screenshots/ 2>/dev/null"") end),
Acum puteți testa că puteți crea capturi de ecran cu orice aspect de tastatură.
Comentarii
- ' este doar un exemplu de lucru. Ideea este de a utiliza coduri de taste
Răspuns
Tocmai a trebuit să abordez aceeași problemă, iar soluția enumerată aici nu a funcționat. Am găsit în cele din urmă xkb-switch care a funcționat corect cu minunat. Are bonusul adăugat de cod simplificat în fișierul rc.lua
.
-- 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
Răspuns
Nu sunt sigur dacă presupune că este un comentariu sau nu, totuși: după citirea și utilizarea comentariului @yotam (mulțumesc! ai primit votul meu pozitiv).
Am decis să-l duc la nivelul următor, aplicând patch-uri xkb-switch pentru a permite ambele steaguri -n și -p, și prin aceasta este posibil să treceți la următorul aspect și să-l tipăriți. până când îmbinarea poate fi clonată de la aici . în cele din urmă combinată! aici .
Acum este posibil să faceți comutatorul puțin mai curat și mai rapid 🙂
-- 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: pentru a face setxkbmap să nu deranjeze comutarea aspectului prin legături de taste minunate, utilizați acest tip de comandă pentru a configura aspectul:
setxkbmap -layout "us,il" -option ""
Acest lucru vă va asigura că nu rămân opțiuni suplimentare din configurarea anterioară ion.