Perché il tasto Blocco scorrimento è disabilitato in Cinnamon / Linux / Xorg?


13

Di recente ho acquistato una tastiera retroilluminata progettata in modo tale da utilizzare il tasto Scroll Lock per attivare la retroilluminazione. Ho scoperto rapidamente che Cinnamon non risponde correttamente quando si preme il tasto Scroll Lock. Inizialmente, ho pensato che la retroilluminazione della tastiera fosse DOA perché tutto il resto ha funzionato fuori dalla scatola. Dopo un riavvio ho scoperto che prima di avviare Xorg sono stato in grado di attivare e disattivare correttamente la retroilluminazione utilizzando il tasto Blocco scorrimento. Quindi, ancora una volta, dopo aver avviato Xorg (e conseguentemente cinnamon_session), questa funzionalità ha smesso di funzionare di nuovo.

Per far funzionare la retroilluminazione dopo l'avvio di Xorg sono stato costretto a rilasciare un: xset led named "Scroll Lock"per abilitare e disabilitare questa funzionalità.

Dopo un po 'di ricerche, mi sono imbattuto in un programma chiamato xevche ha scaricato le informazioni sugli eventi chiave sul terminale dopo l'avvio. Premendo il tasto Scroll Lock il terminale è stato popolato con queste informazioni:

Evento KeyPress, seriale 34, NO sintetico, finestra 0x2c00001, root 0x2df, subw 0x0, tempo 2609824, (410,0), root: (1724.142), stato 0x0, keycode 78 (keysym 0xff14, Scroll_Lock), same_screen YES, XLookupString restituisce 0 byte: XmbLookupString restituisce 0 byte: XFilterEvent restituisce: Falso

KeyRelease event, serial 37, NO sintetico, finestra 0x2c00001, root 0x2df, subw 0x0, tempo 2609912, (410,0), root: (1724.142), stato 0x0, keycode 78 (keysym 0xff14, Scroll_Lock), same_screen YES, XLookupString dà 0 byte:

Quindi so che l'evento chiave è stato inviato al kernel.

Inoltre, è interessante notare che ho osservato comportamenti strani quando ero nel terminale (ancora prima di avviare Xorg o Cinnamon) e usando Scroll Lock. Vale a dire, a questo punto la mia retroilluminazione si attivava come previsto, ma quando il blocco scorrimento è stato abilitato, non ho scritto nulla sullo schermo. Dopo aver disabilitato Scroll Lock, tutto ciò che avevo scritto veniva immediatamente scaricato sul terminale come se fosse stato precedentemente bufferizzato.

tl; dr Qual è il problema con Scroll Lock e Xorg?


Hai avuto fortuna a risolvere questo problema @sherrellbc?
Pykler,

Risposte:


10

Non ho familiarità con Cinnamon, ma dovrebbe essere possibile abilitare il tasto Blocco scorrimento.

Innanzitutto, dobbiamo vedere se hai uno slot modificatore di tastiera di riserva. Correre:

xmodmap -pm

Verrà stampato un elenco della configurazione del modificatore corrente. Speriamo che una di quelle righe non abbia nessuna chiave elencata; generalmente lo sarà mod3. Supponendo che sia il caso, è possibile abilitare Blocco scorrimento con questo comando:

xmodmap -e "add mod3 = Scroll_Lock"

Il LED Scroll Lock ora dovrebbe rispondere alle pressioni del tasto Scroll Lock.

Se funziona, probabilmente vorrai che X lo faccia automaticamente ogni volta che si avvia. Esistono vari modi per farlo: può essere fatto in base all'utente, ma per qualcosa del genere penso che abbia senso impostarlo a livello globale.

Ma non l'ho mai fatto prima di me, quindi è meglio testarlo prima di fornire ulteriori dettagli. :)

OK. Il metodo che ho provato ad attivare quella modmap a livello globale non funziona per me su KDE. :( Ma attivarlo nella mia home directory sembra funzionare bene.

Crea un file chiamato .Xmodmapnella tua home directory contenente questa riga:

add mod3 = Scroll_Lock

Il modo più semplice per farlo è:

cd ~
echo >.Xmodmap "add mod3 = Scroll_Lock"

Ora riavvia X (disconnetti e accedi di nuovo). Eventualmente, il tasto di blocco scorrimento funzionerà. In caso contrario, per favore fatemi sapere.


La configurazione .Xmodmap non ha funzionato per me su Ubuntu 16.04 / Unity, ma la soluzione permanente nella risposta di Pykler ha funzionato :)
Nebel54

7

Ho trovato il modo permanente dopo una lunga notte con molte soluzioni cotte a metà.

# backup your symbols file
sudo cp /usr/share/X11/xkb/symbols/us{,.distribution} 

Aggiungi la seguente riga nella xkb_symbols "basic" {sezione. non ti preoccupare se quella seconda riga non è presente, è presente solo per alcune lingue e non era presente per noi sul mio sistema.

...
    modifier_map Mod3   { Scroll_Lock }; <==<< Add this line

    include "level3(ralt_switch)" <==<< before this line
};

Potrebbe essere necessario fare lo stesso negli altri layout se si passa da una lingua all'altra

Inoltre, esiste una cache in cui vivono i layout xkb. Dovresti cancellarlo prima di riavviare il tuo server X per controllare i nuovi file di simboli della tastiera.

sudo rm -f /var/lib/xkb/*

Questo è carino, ma ha funzionato solo insieme a gsettings change e xkboptions change menzionato in askubuntu.com/a/1067921/274298 per me.
Peschü,

2

Poiché Scroll Lockpuò interferire con le scorciatoie da tastiera quando attivo (denominato F12, Ctrl+ Spacenon funzionerà come previsto), ho deciso di abbinare il Scroll Locktasto all'avvio manuale di xset, alternando lo stato del LED rispetto al suo stato precedente.

Ho creato uno script eseguibile chiamato toggle_keyb_led.sh:

xset q | awk '/LED/{ if ($10 ~ "00000000") print "led"; else print "-led" }' | xargs xset

Questo analizza l'output di xset q, abbinando la linea a LED mask.

Nota 1 : se non funziona per te, verifica con xset -led; xset q | grep 'LED'quale valore della maschera corrente.

Nota 2 : alcuni utenti devono correre xset led 3per attivare la luce. In questo caso, si prega di riscrivere lo script sopra.


Quindi è possibile avviare questo script come collegamento personalizzato utilizzando l'ambiente desktop come (qui è con una cannella):

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.