Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo documento illustra in dettaglio l'implementazione del protocollo per l'integrazione del controllo backlight dei dispositivi da tastiera che si connettono a un host Windows 11 compatibile. Ciò non include indicazioni su vincoli meccanici, vincoli elettrici o selezione dei componenti per l'hardware del dispositivo da tastiera.
Questa guida illustra solo i semplici backlight della tastiera globale, in cui un singolo livello di luminosità si applica all'intera tastiera. Per le tastiere con illuminazione RGB con zone o per tasto, fare invece riferimento a Illuminazione dinamica .
Il supporto per l'integrazione del backlight da tastiera è disponibile in Windows 11 versione 25H2, build 26200.7922 o successiva.
Implementazione del protocollo della retroilluminazione della tastiera
Per comprendere le informazioni presentate qui, è necessaria una buona comprensione del protocollo HID. Per informazioni sul protocollo HID, vedere le risorse seguenti:
- Definizione della classe di dispositivo per dispositivi di interfaccia umana (HID)
- Tabelle di utilizzo HID
Linee guida per il backlight da tastiera
Raccolta HID richiesta
Le funzionalità relative alla retroilluminazione della tastiera devono essere incluse in una raccolta Consumer HID per retroilluminazione della tastiera (Pagina 0xC, Utilizzo 0x7).
Pulsanti di input
La tabella seguente definisce i pulsanti di input supportati dall'host per i controlli di backlight da tastiera. Questi pulsanti non devono applicare direttamente gli aggiornamenti della luminosità nel dispositivo, ma devono invece rinviare le operazioni di controllo della luminosità all'host. In molti casi, l'host fornirà una risposta tempestiva a un comando di input con un report Imposta livello, facoltativamente regolato in base all'algoritmo di luminosità dell'host. Il dispositivo non deve applicare alcuna modifica temporanea della luminosità in attesa di tale risposta.
I pulsanti di input vengono applicati in base al dispositivo e non si applicano ad alcun dispositivo oltre a quello che emette il report.
Se il dispositivo è connesso a un host che non supporta il controllo della retroilluminazione della tastiera, indicato dall'assenza di un rapporto di output Set Level all'avvio o al momento della connessione, il dispositivo può ripiegare sul controllo locale diretto della luminosità per i tasti di input.
Utilizzi facoltativi
| Nome report | Descrizione | Pagina | Documento d'identità |
|---|---|---|---|
| Incremento della luminosità | Richiede all'host di aumentare la luminosità della retroilluminazione di un passaggio logico. L'host determina la dimensione del passo, che può variare in base all'intervallo logico e all'algoritmo di luminosità attivo. È consigliabile che i dispositivi che supportano l'incremento della luminosità supportino anche il decremento della luminosità. | 0x0C | 0x0079 |
| Decremento della luminosità | Richiede all'host di ridurre la luminosità della retroilluminazione di un passaggio logico. L'host determina le dimensioni del passaggio, che possono variare in base all'intervallo logico e all'algoritmo di luminosità attivo. È fortemente consigliato che i dispositivi che supportano la diminuzione della luminosità supportino anche l'aumento della luminosità. | 0x0C | 0x007A |
| Controllo Attivato/Disattivato (OOC) | Richiede all'host di attivare o disattivare l'illuminazione della tastiera. Se si attiva il backlight, l'host determinerà un valore di luminosità diverso da zero appropriato da inviare al dispositivo. La disattivazione del backlight implica una richiesta per l'host di impostare la luce posteriore su zero luminosità. | 0x0C | 0x007C |
| Auto | Richiede all'host di abilitare o disabilitare la regolazione automatica della luminosità. | 0x0C | 0x007F |
| Imposta valore minimo | Richiede all'host di impostare il backlight della tastiera sul livello di luminosità logico minimo diverso da zero (in genere 1 nit). Rappresenta la luminosità minima supportata dal dispositivo senza disattivare completamente la luce posteriore. | 0x0C | 0x007D |
| Imposta il valore massimo | Richiede all'host di impostare il backlight della tastiera sul livello di luminosità massimo logico. | 0x0C | 0x007E |
| Livello successivo | Richiede all'host di impostare la luminosità della tastiera al livello di luminosità successivo più intenso, con passaggio al livello più basso se il livello di luminosità corrente raggiunge o supera il livello massimo suggerito. Se il Report delle Funzionalità di Suggerimenti al Livello non è implementato, questo pulsante viene ignorato. | 0x0C | 0x0515 |
| Livello precedente | Richiede all'host di impostare la luminosità della tastiera al livello inferiore successivo, passando al livello più alto se il livello di luminosità corrente è pari o inferiore al livello più basso. Se il report della funzionalità di suggerimenti di livello non è implementato, questo pulsante viene ignorato. | 0x0C | 0x0516 |
Imposta il livello per il rapporto di output
L'host invierà questo report per impostare o modificare il livello di luminosità del backlight nel dispositivo. Il dispositivo può rilevare un host con retroilluminazione della tastiera ricevendo questo rapporto all'avvio del sistema o quando si connette all'host.
Il report di output Set Level (Imposta livello) deve definire un intervallo logico di valori del livello di luminosità su una scala lineare, con la relativa unità HID dichiarata come nits. L'host usa questo intervallo logico per determinare i possibili livelli di luminosità supportati dal dispositivo; non richiede che il dispositivo venga calibrato per generare valori di luminanza esatti. Tutti gli altri comandi di backlight della tastiera e le operazioni host faranno riferimento a questo intervallo logico.
Se il valore minimo logico è uguale o maggiore del valore massimo logico, il dispositivo viene considerato non conforme e non verrà aperto per il controllo backlight dall'host.
Un valore Set Level pari a 0 indica al dispositivo di disattivare il backlight. È consigliabile che il dispositivo usi un minimo logico pari a 0 (nessuna luminosità) per questo report.
Utilizzi obbligatori
| Nome report | Descrizione | Pagina | Documento d'identità |
|---|---|---|---|
| Imposta livello | Indica al dispositivo di regolare la luminosità della retroilluminazione della tastiera al valore di nit logico specificato. | 0x0C | 0x007B |
Rapporto sulla funzionalità di suggerimento del livello di retroilluminazione della tastiera
Questo report è facoltativo. Il dispositivo può scegliere di supportare una serie di almeno due set di impostazioni di luminosità che desidera scorrere quando l'utente preme i pulsanti Livello successivo o Livello precedente. L'host eseguirà una query per questi set di impostazioni all'avvio del sistema o quando il dispositivo si connette o si riconnette all'host. I preset devono rientrare nell'intervallo logico specificato nel report di output Set Level. Un valore di suggerimento pari a 0 è valido e indica lo stato di backlight spento come impostazione predefinita.
Il report della funzionalità Suggerimenti livello viene ignorato se il dispositivo non implementa né il pulsante di input Livello successivo né il pulsante di input Livello precedente.
Utilizzi facoltativi
| Nome report | Descrizione | Pagina | Documento d'identità |
|---|---|---|---|
| Suggerimento sul livello di backlight della tastiera | Indica un livello di luminosità preimpostato suggerito che deve essere considerato quando l'host gestisce i pulsanti Livello successivo o Livello precedente. | 0x07 | 0x0517 |
Rapporto sulla funzionalità di impostazione del livello di retroilluminazione della tastiera
Questo report è facoltativo. Il dispositivo può scegliere di implementare questo report per segnalare all'host un livello di luminosità iniziale suggerito all'avvio o all'ora di connessione, ad esempio se la backlight è stata modificata dall'utente prima dell'avvio del sistema o collegare il dispositivo. L'host eseguirà una query per questo report all'avvio del sistema o quando il dispositivo si connette o si riconnette all'host, eventualmente scegliendo di sovrascrivere il livello suggerito con un proprio valore. Il valore suggerito 0 è valido e indica che il backlight è disattivato. Se il valore suggerito non rientra nell'intervallo logico del report di output "Imposta Livello", il report viene ignorato. Un valore suggerito che non corrisponde ad alcuna voce nel report della funzionalità Suggerimenti livello è valido, purché rientri nell'intervallo logico.
L'intervallo logico per questo report deve rientrare nell'intervallo logico per il rapporto di uscita del livello impostato.
Utilizzi facoltativi
| Nome report | Descrizione | Pagina | Documento d'identità |
|---|---|---|---|
| Imposta livello | Informa l'host sul livello di luminosità corrente del backlight come suggerimento per lo stato iniziale del dispositivo nei suoi algoritmi di luminosità. | 0x0C | 0x007B |
Comportamento dell'host backlight da tastiera
Dimming in modalità Risparmio energetico
Windows supporta l'attenuazione automatica della tastiera quando è abilitata la modalità Risparmio energia. Nei dispositivi compatibili, questa funzionalità può essere attivata o disattivata in Impostazioni>Sistema>Energia e batteria>risparmio energetico>Ridurre la luminosità della tastiera quando si usa il risparmio energetico o al collegamento seguente: Energia e batteria.
Personalizzazione
Questa funzionalità può essere configurata nel Registro di sistema come descritto nella tabella seguente. Per impostazione predefinita, la funzionalità applica un moltiplicatore di 70% alla luminosità del backlight della tastiera quando il risparmio energia è abilitato.
| Chiave di Registro | Nome | Tipo | Unità |
|---|---|---|---|
| HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Lighting\Backlight | BacklightRisparmioEnergiaAbilitato | REG_DWORD | Booleano (1 o 0) |
| HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Lighting\Backlight | BacklightEnergySaverMultiplier | REG_DWORD | Percentuale (0-100) |
È anche possibile configurare la funzionalità usando Windows Unattended Setup o il provisioning di runtime.
Retroilluminazione tastiera regolazione automatica della luminosità
Nei dispositivi come i portatili che contengono sia un backlight da tastiera che un sensore di luce Ambient light, Windows supporta la regolazione automatica della luminosità del backlight da tastiera. Questa funzionalità è supportata anche per le tastiere esterne quando sono collegate ai dispositivi con sensori di luce ambientale.
La retroilluminazione della tastiera Autobrightness è distinta dalla luminosità adattiva per gli schermi, ma concettualmente simile nell'implementazione.
Nei dispositivi compatibili, questa funzionalità può essere attivata o disattivata in Impostazioni>Bluetooth e dispositivi>Tastiera>Regolare automaticamente la luminosità della tastiera> quando l'illuminazione cambia o al tasto di scelta rapida seguente: Tastiera.
Curva di risposta raggruppata alla luce ambientale
La Retroilluminazione della tastiera Autobrightness utilizza il concetto di curva di risposta alla luce ambientale segmentata (ALR), come descritto in Luminosità adattiva.
Le mappature dei valori predefiniti tra classi di lux e percentuali di luminosità della tastiera sono indicate nella tabella seguente. La percentuale del bucket si riferisce a una proporzione del valore massimo logico del report di output Imposta Valore e verrà utilizzata quando il livello di luce ambientale si trova all'interno dell'intervallo del bucket.
Tutti i bucket nella curva ALR devono essere contigui o sovrapposti. Spazi vuoti tra i bucket non sono consentiti. Ogni bucket deve avere un valore minimo di lux rigorosamente inferiore al valore massimo di lux. Se la lettura della luce ambientale scende al di sotto del lux minimo del bucket più basso, viene usata la percentuale del bucket più basso. Se supera il massimo lux del bucket più alto, viene usata la percentuale del bucket più alto.
| Bucket | Min Lux | Max Lux | Percentuale |
|---|---|---|---|
| 1 | 0 | 6 | 35 |
| 2 | 5 | 14 | 52 |
| 3 | 12 | 32 | 70 |
| 4 | 30 | 45 | 88 |
| 5 | 40 | 100 | 100 |
| 6 | 95 | 110 | 88 |
| 7 | 105 | 160 | 70 |
| 8 | 155 | 205 | 52 |
| 9 | 200 | 300 | 0 |
Quando sono collegate più tastiere backlit, viene usata la stessa curva ALR per tutte le tastiere, con le percentuali risultanti applicate a ogni dispositivo in base all'intervallo di luminosità logica del dispositivo.
Personalizzazione
I valori di abilitazione della luminosità automatica e della curva ALR possono essere configurati nel Registro di sistema come descritto nella tabella seguente. Possono anche essere configurati usando Windows Installazione non presidiata o il provisioning di Runtime.
| Chiave di Registro | Nome | Tipo | Unità |
|---|---|---|---|
| HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Lighting\Backlight | AbilitaAutobrightnessRetroilluminazioneSuddivisa | REG_DWORD | Booleano (1 o 0) |
| HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Lighting\Backlight | MappaturaDiAutoluminositàRetroilluminazioneBucket | REG_SZ | Stringa costituita da una o più triple delimitate da virgole nel formato <minlux>:<maxlux>:<percentage>. Ogni triplo corrisponde a un bucket nella curva ALR. Se la curva ALR personalizzata ha spazi vuoti, contiene zero voci o contiene un bucket in cui minlux ≥ maxluxverrà usata la curva ALR predefinita. |
Override manuale della luminosità automatica
Se viene premuto un pulsante di input mentre è abilitata l'illuminazione automatica della tastiera, verrà avviato un override manuale temporaneo dell'algoritmo di regolazione automatica della luminosità. L'override genera un singolo segmento aggiuntivo applicato sopra la curva suddivisa in intervalli, in origine nella lettura corrente della luce ambientale, con valori di lux minimo e massimo generati a una distanza determinata sopra o sotto la lettura corrente basata su una percentuale di tale lettura.
Le associazioni dei valori predefiniti tra i bucket di lux e le costanti dell'intervallo di override manuale sono illustrate nella tabella sottostante. Le voci nella tabella di ricerca devono avere intervalli di lux contigui e non sovrapposti.
| Bucket | Min Lux | Max Lux | Fattore limite override inferiore | Fattore vincolo superiore dell'override |
|---|---|---|---|---|
| 1 | 0 | 20 | 1.00 | 1.00 |
| 2 | 20 | 40 | 0.70 | 0.60 |
| 3 | 40 | 150 | 0.60 | 0.60 |
| 4 | 150 | 600 | 0,50 | 0,50 |
| 5 | 600 | 1000 | 0.40 | 0.40 |
| 6 | 1000 | 4000 | 0.30 | 0.25 |
| 7 | 4000 | 10000 | 0,20 | 0,20 |
| 8 | 10000 | 30000 | 0.15 | 0,10 |
| 9 | 30000 | 100000 | 0,10 | 0,10 |
Per un esempio di calcolo dell'intervallo di override, prendere in considerazione un utente che preme un pulsante di input quando la lettura della luce ambientale più recente è di 120 lux. La voce corrispondente della tabella di ricerca è bucket 3, perché 120 lux cade tra 40 e 150 lux. Il contenitore verrà creato usando una soglia inferiore del 60% rispetto alla lettura corrente. Con R=120 e A=0,6, la soglia inferiore è 120(1 - 0,6) = 48 lux. La soglia superiore è anche 60% al di sopra della lettura corrente. Anche in questo caso, con R=120 e B=0,6, la soglia superiore è 120(1 + 0,6) = 192 lux. L'override manuale verrà quindi applicato mentre il livello di luce ambientale rimane compreso nell'intervallo [48, 192].
Una volta attivato, viene utilizzata la percentuale di luminosità del secchio di sovrascrittura manuale fino a quando:
- la lettura della luce ambientale attraversa i limiti del bucket di override, a quel punto l'override viene annullato, l'intervallo di override viene ignorato e il controllo automatico della luminosità riprende utilizzando la curva ALR suddivisa in bucket, oppure
- un altro pulsante di ingresso viene ricevuto dal dispositivo, il che richiede all'host di regolare la percentuale di luminosità e ricalcolare l'intervallo di override manuale in base alla lettura più recente della luce ambientale.
Personalizzazione
La tabella di ricerca di override manuale può essere configurata nel Registro di sistema come descritto nella tabella seguente. Può anche essere configurato usando Installazione automatica di Windows o tramite provisioning in fase di esecuzione.
| Chiave di Registro | Nome | Tipo | Unità |
|---|---|---|---|
| HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Lighting\Backlight | Override manuale della luminosità automatica del display | REG_SZ | Stringa costituita da una o più tuple delimitate da virgole nel formato <minlux>:<maxlux>:<lowerboundfactor>:<upperboundfactor>. Ogni tupla da 4 rappresenta una voce nella tabella di ricerca. Se la tabella di ricerca personalizzata ha spazi vuoti, contiene zero voci, contiene bucket sovrapposti o contiene qualsiasi bucket in cui minlux ≥ maxluxverrà usata la tabella di ricerca predefinita. |
Descrittori di report HID di esempio
Descrittore di retroilluminazione della tastiera di esempio
Il descrittore seguente supporta tutti gli utilizzi obbligatori e facoltativi. Dichiara il supporto per otto pulsanti di input retroilluminati della tastiera.
Tutti gli intervalli logici dei report delle funzionalità Imposta livello e Suggerimenti livello devono rientrare nell'intervallo logico del report di output Imposta livello obbligatorio.
0x05, 0x0C, // UsagePage(Consumer[0x000C])
0x09, 0x07, // UsageId(Keyboard Backlight[0x0007])
0xA1, 0x01, // Collection(Application)
0x85, 0x01, // ReportId(1)
0x09, 0x79, // UsageId(Keyboard Brightness Increment[0x0079])
0x09, 0x7A, // UsageId(Keyboard Brightness Decrement[0x007A])
0x09, 0x7C, // UsageId(Keyboard Backlight OOC[0x007C])
0x09, 0x7D, // UsageId(Keyboard Backlight Set Minimum[0x007D])
0x09, 0x7E, // UsageId(Keyboard Backlight Set Maximum[0x007E])
0x09, 0x7F, // UsageId(Keyboard Backlight Auto[0x007F])
0x0A, 0x15, 0x05, // UsageId(Keyboard Brightness Next[0x0515])
0x0A, 0x16, 0x05, // UsageId(Keyboard Brightness Previous[0x0516])
0x15, 0x00, // LogicalMinimum(0)
0x25, 0x01, // LogicalMaximum(1)
0x95, 0x08, // ReportCount(8)
0x75, 0x01, // ReportSize(1)
0x81, 0x06, // Input(Data, Variable, Relative, NoWrap, Linear, PreferredState, NoNullPosition, BitField)
0x0A, 0x17, 0x05, // UsageId(Keyboard Backlight Level Suggestion[0x0517])
0x67, 0xE1, 0x00, 0x00, 0x01, // Unit('nits', SiLinear, Centimeter:-2, Candela:1)
0x55, 0x04, // UnitExponent(10,000)
0x26, 0xFF, 0x00, // LogicalMaximum(255)
0x95, 0x04, // ReportCount(4)
0x75, 0x08, // ReportSize(8)
0xB1, 0x03, // Feature(Constant, Variable, Absolute, NoWrap, Linear, PreferredState, NoNullPosition, NonVolatile, BitField)
0x85, 0x02, // ReportId(2)
0x09, 0x7B, // UsageId(Keyboard Backlight Set Level[0x007B])
0x95, 0x01, // ReportCount(1)
0xB1, 0x03, // Feature(Constant, Variable, Absolute, NoWrap, Linear, PreferredState, NoNullPosition, NonVolatile, BitField)
0x85, 0x01, // ReportId(1)
0x09, 0x7B, // UsageId(Keyboard Backlight Set Level[0x007B])
0x91, 0x02, // Output(Data, Variable, Absolute, NoWrap, Linear, PreferredState, NoNullPosition, NonVolatile, BitField)
0xC0, // EndCollection()
Il descrittore precedente è stato generato tramite il file Waratah seguente:
[[unit]]
name = 'meter'
centimeter = [100.0, 1.0]
[[unit]]
name = 'nits'
candela = [1.0, 1.0]
meter = [1.0, -2.0]
[[usagePage]]
name = 'Consumer'
[[usagePage.usage]]
id = 0x07
name = 'Keyboard Backlight'
types = ['CA']
[[usagePage.usage]]
id = 0x515
name = 'Keyboard Brightness Next'
types = ['OSC']
[[usagePage.usage]]
id = 0x516
name = 'Keyboard Brightness Previous'
types = ['OSC']
[[usagePage.usage]]
id = 0x517
name = 'Keyboard Backlight Level Suggestion'
types = ['SV']
[[applicationCollection]]
usage = ['Consumer', 'Keyboard Backlight']
[[applicationCollection.inputReport]]
[[applicationCollection.inputReport.variableItem]]
usage = ['Consumer', 'Keyboard Brightness Increment']
logicalValueRange = [0, 1]
reportFlags = ['Relative', 'PreferredState']
[[applicationCollection.inputReport.variableItem]]
usage = ['Consumer', 'Keyboard Brightness Decrement']
logicalValueRange = [0, 1]
reportFlags = ['Relative', 'PreferredState']
[[applicationCollection.inputReport.variableItem]]
usage = ['Consumer', 'Keyboard Backlight OOC']
logicalValueRange = [0, 1]
reportFlags = ['Relative', 'PreferredState']
[[applicationCollection.inputReport.variableItem]]
usage = ['Consumer', 'Keyboard Backlight Set Minimum']
logicalValueRange = [0, 1]
reportFlags = ['Relative', 'PreferredState']
[[applicationCollection.inputReport.variableItem]]
usage = ['Consumer', 'Keyboard Backlight Set Maximum']
logicalValueRange = [0, 1]
reportFlags = ['Relative', 'PreferredState']
[[applicationCollection.inputReport.variableItem]]
usage = ['Consumer', 'Keyboard Backlight Auto']
logicalValueRange = [0, 1]
reportFlags = ['Relative', 'PreferredState']
[[applicationCollection.inputReport.variableItem]]
usage = ['Consumer', 'Keyboard Brightness Next']
logicalValueRange = [0, 1]
reportFlags = ['Relative', 'PreferredState']
[[applicationCollection.inputReport.variableItem]]
usage = ['Consumer', 'Keyboard Brightness Previous']
logicalValueRange = [0, 1]
reportFlags = ['Relative', 'PreferredState']
# Keyboard provided brightness level suggestions for host.
# Here, the device suggests 4 brightness levels, which the host is free to override as it sees fit.
[[applicationCollection.featureReport]]
[[applicationCollection.featureReport.variableItem]]
usage = ['Consumer', 'Keyboard Backlight Level Suggestion']
sizeInBits = 8
logicalValueRange = 'maxUnsignedSizeRange'
unit = 'nits'
reportFlags = ['constant']
count = 4
# Keyboard reports its last used brightness level as a hint to the host during initialization.
[[applicationCollection.featureReport]]
[[applicationCollection.featureReport.variableItem]]
usage = ['Consumer', 'Keyboard Backlight Set Level']
sizeInBits = 8
logicalValueRange = 'maxUnsignedSizeRange'
unit = 'nits'
reportFlags = ['constant']
# Host control of the keyboard brightness level.
# Device has been previously calibrated to understand what LED 'power level' corresponds to emitted nits.
[[applicationCollection.outputReport]]
[[applicationCollection.outputReport.variableItem]]
usage = ['Consumer', 'Keyboard Backlight Set Level']
sizeInBits = 8
logicalValueRange = 'maxUnsignedSizeRange'
unit = 'nits'
Argomenti correlati
- Microsoft-Windows-Devices-Lights-Configuration | Windows riferimento all'installazione non presidiata
- Illuminazione dinamica
- Sensori di luce ambientale
- Luminosità adattiva