Félelmetes: billentyűzetkiosztás kapcsoló

Félelmeteset használok ablakkezelőként a gnome alatt (debian rendszer), és létrehoztam egy widgetet a billentyűzetkiosztás váltására a következő kóddal:

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

Működik, azonban a billentyűzet viselkedésével komoly probléma van. Amikor a ru elrendezésre váltok, nem működnek a billentyűzet-kötéseim. A fantasztikus kötések nem működnek. Például a vim parancsikonok sem működnek stb. Hogyan tudom megoldani ezt a problémát?

Válasz

A billentyűzet-összerendelések nem működnek, mert a billentyűzeten már nincsenek ezek a kulcsjelek.

Ha például szeretné megadni a Alt + F csinálj valamit, akkor valamilyen kulcsban “F” kell. De ha “ru” egyedül tölti be , akkor egyáltalán nincs “F” (sem latin betű).

Azt hiszem, különösen, ha több elrendezést kell kezelnie , hogy sokkal jobb, ha hagyod, hogy az X11 (a setxkbmap segítségével) elvégezze a munkát helyetted; az ablakkezelők módja sokkal korlátozottabb, amint azt Ön felfedezte.

Megpróbálhatja azt is, mivel az awfull widget úgy tűnik, hogy meghívja a setxkbmap-ot, hogy a “ru” szót “ru, us” -ra cserélje, pl. :

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

így az “us” elrendezés a “ru” tetejére kerül, amikor betöltődik, és az “us” billentyűk Az elrendezést, bár még mindig nem tipizálható közvetlenül, a kulcsok összerendelését kezelő X11 réteg fogja látni. , a GYIK -ból:

A kulcsnevek helyett kulcskódokat kell használnia, például:

  1. Futtassa a xev parancsot.
  2. Nyomja meg a Nyomtatás gombot.
  3. Olvassa el a kimenetet

    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. Hozzon létre ~ / screenshotokat, telepítse a scrot-ot, és adja hozzá a következőket az rc.lua fájlhoz:

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

Most tesztelheti, hogy bármilyen billentyűzetkiosztással létrehozhat-e képernyőképeket.

Megjegyzések

  • Ez ' csak működő példa. A lényeg az, hogy kulcskódokat használjak

Válasz

Csak ugyanazt a problémát kellett megoldanom, és a az itt felsorolt megoldás nem működött. Végül találtam egy xkb-switch -et, amely fantasztikusan működött megfelelően. Az rc.lua fájlban megtalálható az egyszerűsített kód bónuszja.

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

Válasz

Nem biztos, hogy feltételezzük-e, hogy megjegyzés vagy sem: azonban miután elolvasta és felhasználta a @yotam megjegyzését (köszönöm! megkapta a pozitív szavazatomat).

Úgy döntöttem, hogy továbblépek egy következő szintre, az xkb-switch javításával engedélyezem az -n és -p jelzőket, és ezáltal lehetőség van a következő elrendezésre váltásra és annak kinyomtatására. amíg az egyesítés klónozható itt . végül összeolvadt! megtalálható itt .

Most már egy kicsit tisztábbá és gyorsabbá teheti a kapcsolót 🙂

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

SZERKESZTÉS: ha azt szeretné, hogy a setxkbmap ne zavarja az elrendezés váltását félelmetes kulcskötésekkel, használja ezt a parancsot az elrendezés beállításához:

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

Ez biztosítja, hogy ne maradjon extra opció az előző konfigurációból ion.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük