Génial: commutateur de disposition du clavier

Jutilise awesome comme gestionnaire de fenêtres sous gnome (système Debian) et jai créé un widget pour changer la disposition du clavier par ce code:

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

Cela fonctionne, mais il y a un problème sérieux avec le comportement du clavier. Lorsque je passe à la disposition ru, aucune de mes liaisons de clavier ne fonctionne. Les liaisons géniales ne fonctionnent pas. Par exemple, les raccourcis vim ne fonctionnent pas également, etc. Comment puis-je résoudre ce problème?

Réponse

Vos raccourcis clavier ne fonctionnent pas car votre clavier na plus ces touches.

Si vous voulez avoir, par exemple, Alt + F faites quelque chose, alors vous avez besoin de « F » dans une clé. Mais si vous chargez « ru » seul , alors il ny a pas du tout de « F » (ni de lettre latine).

Je pense, spécialement lorsque vous devez gérer plusieurs mises en page , quil vaut mieux laisser X11 (via setxkbmap) faire le travail à votre place; la façon dont les gestionnaires de fenêtres le font est beaucoup plus limitée que vous lavez découvert.

Vous pouvez également essayer, comme le widget horrible semble appeler setxkbmap, de changer « ru » par « ru, us », par exemple :

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

de cette façon, la mise en page « us » sera empilée au-dessus de celle « ru » une fois chargée, et les clés du « us » la mise en page, même si elle nest toujours pas directement typable, sera vue par le calque X11 qui gère les raccourcis clavier.

Réponse

À propos dAwesomeWM , à partir de sa FAQ :

Vous devriez utiliser des codes clés, au lieu de noms de clés, comme ceci:

  1. Exécutez xev.
  2. Appuyez sur la touche Imprimer .
  3. Lire la sortie

    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. Créez ~ / screenshots, installez scrot et ajoutez ce qui suit à rc.lua:

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

Vous pouvez maintenant tester que vous pouvez créer des captures décran avec nimporte quelle disposition de clavier.

Commentaires

  • Ce ' nest quun exemple fonctionnel. Le but est dutiliser des codes clés

Answer

Je « ai juste dû aborder le même problème, et le solution listée ici na pas fonctionné. Jai finalement trouvé xkb-switch qui fonctionnait correctement avec awesome. Il a lavantage supplémentaire dun code simplifié dans le fichier 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éponse

Je ne sais pas si cela suppose un commentaire ou non, cependant: après avoir lu et utilisé le commentaire de @yotam «  (merci! vous avez mon vote favorable).

Jai décidé de passer au niveau suivant, en corrigeant xkb-switch pour autoriser à la fois les indicateurs -n et -p, et ce faisant il est possible de passer à la mise en page suivante et de limprimer. jusquà ce que la fusion puisse être clonée à partir de ici . enfin fusionné! peut être trouvé sur ici .

Il est désormais possible de rendre le mélangeur un peu plus propre et plus rapide 🙂

-- 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: pour que setxkbmap ne perturbe pas le changement de disposition par des raccourcis clavier impressionnants, utilisez ce type de commande pour configurer votre disposition:

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

Cela garantira quaucune option supplémentaire nest laissée à partir de la configuration précédente ion.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *