22     pthread_mutex_lock(
imutex(kb));
 
   28     pthread_mutex_unlock(
imutex(kb));
 
   33         { 0x07, 0x05, 2, 0, 0x03, 0x00 }    
 
   51                 msg[1][4 + pair * 2] = 
key;
 
   52                 msg[1][5 + pair * 2] = action;
 
   88                     else if(!strcmp(
keymap[
key].name, 
"light"))
 
   90                     else if(!strcmp(
keymap[
key].name, 
"lock"))
 
   93                 msg[1][4 + pair * 2] = 
key;
 
   94                 msg[1][5 + pair * 2] = action;
 
  108     kb->
vtable->updateindicators(kb, 0);
 
#define nk95cmd(kb, command)
nk95cmd() macro is used to wrap _nk95cmd() with debugging information (file and lineno). the command structure is different:   Just the bits 23..16 are used as bits 7..0 for bRequest   Bits 15..0 are used as wValue 
 
void setmodeindex_nrgb(usbdevice *kb, int index)
 
#define DELAY_MEDIUM(kb)
the medium delay is used after sending a command before waiting for the answer. 
 
#define NK95_M1
Switch to mode 1. 
 
uchar keys[((((152+3+12)+25)+7)/8)]
 
#define NK95_M3
Switch to mode 3. 
 
#define NK95_HWOFF
Hardware-specific commands for the K95 nonRGB,. 
 
int cmd_idle_kb(usbdevice *kb, usbmode *dummy1, int dummy2, int dummy3, const char *dummy4)
 
int start_kb_nrgb(usbdevice *kb, int makeactive)
 
#define NEEDS_FW_UPDATE(kb)
 
#define NK95_M2
Switch to mode 2. 
 
const union devcmd * vtable
 
int setactive_kb(usbdevice *kb, int active)
 
Definitions for using USB interface. 
 
const key keymap[(((152+3+12)+25)+11)]
 
#define usbsend(kb, messages, count)
usbsend macro is used to wrap _usbsend() with debugging information (file and lineno) ...
 
int cmd_active_kb(usbdevice *kb, usbmode *dummy1, int dummy2, int dummy3, const char *dummy4)