It's interesting that USB keyboards can generate events on multiple channels: For example, one keyboard that I have has 3 separate channels that will send events to, each one having an entry in /dev/input:
Code
sudo evtest

/dev/input/event19:	USB Wired Keyboard
/dev/input/event20:	USB Wired Keyboard System Control
/dev/input/event21:	USB Wired Keyboard Consumer Control

However, only 2 of these show up in /dev/input/by-id

Code
ls /dev/input/by-id
usb-0461_USB_Wired_Keyboard-event-if01
usb-0461_USB_Wired_Keyboard-event-kbd                       

If I run evtest on each one in turn, it tells me which events can be generated by that particular channel:

This channel is the normal 104 key keyboard.

Code
sudo evtest
Select the device event number [0-28]: 19
Input device ID: bus 0x3 vendor 0x461 product 0x4e6f version 0x110
Input device name: "USB Wired Keyboard"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 1 (KEY_ESC)
    Event code 2 (KEY_1)
    Event code 3 (KEY_2)
    Event code 4 (KEY_3)
...
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)
  Event type 17 (EV_LED)
    Event code 0 (LED_NUML) state 0
    Event code 1 (LED_CAPSL) state 0
    Event code 2 (LED_SCROLLL) state 0
Key repeat handling:
  Repeat type 20 (EV_REP)
    Repeat code 0 (REP_DELAY)
      Value    250
    Repeat code 1 (REP_PERIOD)
      Value     33



This channel will generate KEY_SLEEP etc. (System Control)

Code
sudo evtest
Select the device event number [0-28]: 20
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x461 product 0x4e6f version 0x110
Input device name: "USB Wired Keyboard System Control"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 116 (KEY_POWER)
    Event code 142 (KEY_SLEEP)
    Event code 143 (KEY_WAKEUP)
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)
Properties:
Testing ... (interrupt to exit)

This channel will generate KEY_VOLUMEUP/KEY_VOLUMEDOWN etc. (Consumer Control)

Code
sudo evtest
Select the device event number [0-28]: 21
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x461 product 0x4e6f version 0x110
Input device name: "USB Wired Keyboard Consumer Control"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 114 (KEY_VOLUMEDOWN)
    Event code 115 (KEY_VOLUMEUP)
    Event code 128 (KEY_STOP)
    Event code 130 (KEY_PROPS)
   ...
  Event type 2 (EV_REL)
    Event code 6 (REL_HWHEEL)
    Event code 12 (REL_HWHEEL_HI_RES)
  Event type 3 (EV_ABS)
    Event code 32 (ABS_VOLUME)
      Value      0
      Min        0
      Max      572
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)

So if I want to capture all the events from this particular keyboard, I would have to open all 3 channels in EVIOCGRAB mode.

This would be useful if I wanted to handle all the events from a keyboard, for example a kiosk like application.

It was baffling how certain special keys like VOL UP on the keyboard were getting processed when it was opened it in exclusive GRAB mode. Only one of the channels was getting opened in exclusive mode.

To get all of the events before the OS can get it, /dev/input/event19, event20 and event21 would have to opened in EVIOCGRAB mode.