Hola companys!
Vull compartir la meva solució al problema que s'indica al títol. Em vaig inspirar per escriure aquest article per un company
Descripció del problema
Vaig utilitzar Ubuntu 18.04 per treballar i recentment em vaig adonar que quan canviava de disseny amb alt+shift en aplicacions com Visual Studio Code, Skype, Slack i altres que es van crear amb Electron, es produeix el següent problema: el focus del camp d'entrada va a la part superior panell de la finestra (menú). Per altres motius, em vaig traslladar a Fedora + KDE i em vaig adonar que el problema no havia desaparegut. Mentre buscava una solució, he trobat un article meravellós
Intentava entendre què passava
Així que vaig decidir prendre el temps per esbrinar què estava passant. Ara descriuré breument el camí que vaig seguir, potser algú més coneixedor en aquest tema m'ajudarà a explicar les dificultats que vaig trobar.
Vaig obrir Visual Studio Code i vaig començar a fer clic a diferents combinacions Alt+<%alguna cosa%> per veure com responia l'aplicació. En gairebé tots els casos, totes les combinacions excepte Alt+Maj funcionaven sense perdre el focus. Semblava que algú estava menjant la majúscula premuda, que va seguir després de mantenir premuda Alt, i l'aplicació va pensar que vaig prémer Alt, després no vaig prémer res, va deixar anar Alt i em va centrar alegrement al seu menú, cosa que semblava bastant lògic això.
Vaig obrir la configuració per canviar la disposició del teclat (ja saps, aquesta llarga llista amb caselles de selecció i tot tipus de paràmetres per a tecles) i la vaig configurar per canviar de disseny mitjançant el botó Alt, sense cap clic addicional.
Després d'això, Alt+Tab per canviar de finestres va deixar de funcionar. Només va funcionar Tab, és a dir, algú va tornar a "menjar-se" el meu Alt. No quedaven preguntes sobre qui era aquest "algú", però no tenia ni idea de què es podia fer amb ell.
Però com que el problema s'havia de resoldre d'alguna manera, va venir a la ment una solució:
- A la configuració, desactiveu la tecla d'accés ràpid per canviar la disposició del teclat (desmarqueu totes les caselles de selecció a la secció Canvia a un altre disseny);
- Creeu la vostra pròpia tecla d'accés ràpid que canviaria el disseny per a mi
Descripció de la solució
Primer, instal·lem un programa que us permeti assignar ordres a les tecles Xbindkeys. Malauradament, les eines estàndard no em van permetre crear una tecla d'accés ràpid per a una combinació com Alt+Maj mitjançant una bella interfície. Es pot fer per Alt+S, Alt+1, Alt+Maj+Y, etc. etc., però això no és adequat per a la nostra tasca.
sudo dnf install xbindkeysrc
Més detalls al respecte estan disponibles a
A continuació, crearem un fitxer de configuració de mostra per al programa. La mostra és força curta, amb unes quantes ordres, just el que necessiteu per esbrinar com treballar-hi:
xbindkeys -d > ~/.xbindkeysrc
Com podeu veure a l'exemple del fitxer, hem d'indicar la tecla d'accés ràpid que volem utilitzar i l'ordre que s'ha d'executar. Sembla senzill.
# Examples of commands:
"xbindkeys_show"
control+shift + q
# set directly keycode (here control + f with my keyboard)
"xterm"
c:41 + m:0x4
Com a tecla d'accés ràpid, podeu utilitzar escriptura llegible per l'home o utilitzar codis de tecla. Només em va funcionar amb codis, però ningú et prohibeix experimentar una mica.
Per obtenir els codis, heu d'utilitzar l'ordre:
xbindkeys -k
S'obrirà una petita finestra "X". Només heu de prémer les tecles quan el focus està en aquesta finestra! Només en aquest cas veureu alguna cosa com això al terminal:
[podkmax@localhost ~]$ xbindkeys -k
Press combination of keys or/and click under the window.
You can use one of the two lines after "NoCommand"
in $HOME/.xbindkeysrc to bind a key.
"(Scheme function)"
m:0x4 + c:39
Control + s
En el meu cas, la combinació de tecles Alt+Maj és el següent:
m:0x8 + c:50
Ara ens hem d'assegurar que quan feu clic a aquesta combinació, el disseny canvia. Només he trobat una ordre de treball per especificar el disseny:
setxkbmap ru
setxkbmap us
Com podeu veure a l'exemple, només pot habilitar un disseny o un altre, així que no em va venir al cap res més que escriure un guió.
vim ~/layout.sh
#!/bin/bash
LAYOUT=$(setxkbmap -print | awk -F + '/xkb_symbols/ {print $2}')
if [ "$LAYOUT" == "ru" ]
then `/usr/bin/setxkbmap us`
else `/usr/bin/setxkbmap ru`
fi
Ara, si els fitxers .xbindkeysrc i layout.sh es troben al mateix directori, la vista final del fitxer .xbindkeysrc és el següent:
# Examples of commands:
"xbindkeys_show"
control+shift + q
# set directly keycode (here control + f with my keyboard)
"xterm"
c:41 + m:0x4
# specify a mouse button
"xterm"
control + b:2
#А вот то, что добавил я
"./layout.sh"
m:0x8 + c:50
Després d'això, apliquem els canvis:
xbindkeys -p
I pots comprovar. No oblideu desactivar qualsevol opció per canviar de disseny a la configuració estàndard.
Total
Col·legues, espero que aquest article pugui ajudar algú a desfer-se ràpidament d'un problema molest. Personalment, em vaig passar tot el dia lliure intentant esbrinar i resoldre el problema d'alguna manera, de manera que ja no em distregués durant l'horari laboral. He escrit aquest article per estalviar temps i nervis a algú. Molts de vosaltres feu servir un mètode alternatiu per canviar de disseny i no enteneu quin és el problema. Personalment, m'agrada canviar amb Alt+Maj. I així és com vull que funcioni. Si compartiu la meva opinió i us trobeu davant d'aquest problema, aquest article us hauria d'ajudar.
Font: www.habr.com