For keys such as the Return key or Esc key, the qualifiers specified in
the keytypes table (up to two) are the qualifiers used to establish the
response to the key. This is done as follows. In the keytypes table, the
values listed for the key types are those listed for the qualifiers in
<devices/keymap.h> and <devices/keymap.i>. specifically, these qualifier
equates are:
KC_NOQUAL 0x00
KCF_SHIFT 0x01
KCF_ALT 0x02
KCF_CONTROL 0x04
KC_VANILLA 0x07
KCF_DOWNUP 0x08
KCF_STRING 0x40
As shown above, the qualifiers for the various types of keys occupy
specific bit positions in the key types control byte. As you may have
noticed, there are three possible qualifiers, but only a 4-byte space in
the table for each key. This does not allow space to describe what the
computer should output for all possible combinations of qualifiers. A
solution exists, however, for "vanilla" keys, such as the alphabetic keys.
Here is how that works.
Keys of type KC_VANILLA use the 4 bytes to represent the data output for
the key alone, Shifted key, Alt'ed key, and Shifted-and-Alt'ed key. Then
for the Ctrl-key-plus-vanilla-key, use the code for the key alone with
bits 6 and 5 set to 0.
The Vanilla Qualifier Does Not Mean Plain.
------------------------------------------
The qualifier KC_VANILLA is equivalent to
KCF_SHIFT+KCF_ALT+KCF_CONTROL.
This table shows how to interpret the keymap for various combinations of
the qualifier bits:
Table 34-4: Keymap Qualifier Bits
Then data at this position in the keytable is
If Keytype is: output when the key is pressed along with:
-------------- ---------------------------------------------
KC_NOQUAL - - - alone
KCF_SHIFT - - Shift alone
KCF_ALT - - Alt alone
KCF_CONTROL - - Ctrl alone
KCF_ALT+KCF_SHIFT Shift+Alt Alt Shift alone
KCF_CONTROL+KCF_ALT Ctrl+Alt Ctrl Alt alone
KCF_CONTROL+KCF_SHIFT Ctrl+Shift Ctrl Shift alone
KC_VANILLA Shift+Alt Alt Shift alone*
*Special case--Ctrl key, when pressed with one of the alphabet keys
and certain others, is to output key-alone value with the bits 6 and
5 set to zero.