Che è stato introdotto in C99 e si chiama designated initialiser.
Fondamentalmente consente di impostare valori specifici in un array con il resto a sinistra come valori predefiniti.
In questo caso particolare, gli indici di array sono i codici di scansione della tastiera. 0x3a
è scan code in set #1 (vedere la sezione 10.6) per la chiave CapsLock
, 0x45
è NumLock
e 0x46 è ScrollLock
.
Al primo link qui sopra, essa afferma che:
int a[6] = { [4] = 29, [2] = 15 };
è equivalente a:
int a[6] = { 0, 0, 15, 0, 29, 0 };
È interessante notare che, anche se il legame si afferma che =
è necessario, che non sembra sii il caso qui.
Molto probabilmente è un'estensione del compilatore che consente di inizializzare specifiche voci di array (a determinati indici) senza riempire il resto. –