/* /!\\ This file was heavily generated by gen_tty_keys.sh */
#define KH(in) { in, sizeof(in) - 1 }
static const Tty_Key tty_keys[] = {
{
  "F1",
  sizeof("F1") - 1,
  {
    KH("\033OP"), // default F1
    KH("\033[O3P"), // default Alt+F1
    KH("\033[1;5P"), // default Ctrl+F1
    KH("\033[1;7P"), // default Ctrl+Alt+F1
    KH("\033[1;2P"), // default Shift+F1
    KH("\033[1;4P"), // default Shift+Alt+F1
    KH("\033[1;6P"), // default Shift+Ctrl+F1
    KH("\033[1;8P"), // default Shift+Ctrl+Alt+F1
  },
  {
    KH("\033OP"), // cursor F1
    KH("\033[O3P"), // cursor Alt+F1
    KH("\033[1;5P"), // cursor Ctrl+F1
    KH("\033[1;7P"), // cursor Ctrl+Alt+F1
    KH("\033[1;2P"), // cursor Shift+F1
    KH("\033[1;4P"), // cursor Shift+Alt+F1
    KH("\033[1;6P"), // cursor Shift+Ctrl+F1
    KH("\033[1;8P"), // cursor Shift+Ctrl+Alt+F1
  },
},
{
  "F2",
  sizeof("F2") - 1,
  {
    KH("\033OQ"), // default F2
    KH("\033[O3Q"), // default Alt+F2
    KH("\033[1;5Q"), // default Ctrl+F2
    KH("\033[1;7Q"), // default Ctrl+Alt+F2
    KH("\033[1;2Q"), // default Shift+F2
    KH("\033[1;4Q"), // default Shift+Alt+F2
    KH("\033[1;6Q"), // default Shift+Ctrl+F2
    KH("\033[1;8Q"), // default Shift+Ctrl+Alt+F2
  },
  {
    KH("\033OQ"), // cursor F2
    KH("\033[O3Q"), // cursor Alt+F2
    KH("\033[1;5Q"), // cursor Ctrl+F2
    KH("\033[1;7Q"), // cursor Ctrl+Alt+F2
    KH("\033[1;2Q"), // cursor Shift+F2
    KH("\033[1;4Q"), // cursor Shift+Alt+F2
    KH("\033[1;6Q"), // cursor Shift+Ctrl+F2
    KH("\033[1;8Q"), // cursor Shift+Ctrl+Alt+F2
  },
},
{
  "F3",
  sizeof("F3") - 1,
  {
    KH("\033OR"), // default F3
    KH("\033[O3R"), // default Alt+F3
    KH("\033[1;5R"), // default Ctrl+F3
    KH("\033[1;7R"), // default Ctrl+Alt+F3
    KH("\033[1;2R"), // default Shift+F3
    KH("\033[1;4R"), // default Shift+Alt+F3
    KH("\033[1;6R"), // default Shift+Ctrl+F3
    KH("\033[1;8R"), // default Shift+Ctrl+Alt+F3
  },
  {
    KH("\033OR"), // cursor F3
    KH("\033[O3R"), // cursor Alt+F3
    KH("\033[1;5R"), // cursor Ctrl+F3
    KH("\033[1;7R"), // cursor Ctrl+Alt+F3
    KH("\033[1;2R"), // cursor Shift+F3
    KH("\033[1;4R"), // cursor Shift+Alt+F3
    KH("\033[1;6R"), // cursor Shift+Ctrl+F3
    KH("\033[1;8R"), // cursor Shift+Ctrl+Alt+F3
  },
},
{
  "F4",
  sizeof("F4") - 1,
  {
    KH("\033OS"), // default F4
    KH("\033[O3S"), // default Alt+F4
    KH("\033[1;5S"), // default Ctrl+F4
    KH("\033[1;7S"), // default Ctrl+Alt+F4
    KH("\033[1;2S"), // default Shift+F4
    KH("\033[1;4S"), // default Shift+Alt+F4
    KH("\033[1;6S"), // default Shift+Ctrl+F4
    KH("\033[1;8S"), // default Shift+Ctrl+Alt+F4
  },
  {
    KH("\033OS"), // cursor F4
    KH("\033[O3S"), // cursor Alt+F4
    KH("\033[1;5S"), // cursor Ctrl+F4
    KH("\033[1;7S"), // cursor Ctrl+Alt+F4
    KH("\033[1;2S"), // cursor Shift+F4
    KH("\033[1;4S"), // cursor Shift+Alt+F4
    KH("\033[1;6S"), // cursor Shift+Ctrl+F4
    KH("\033[1;8S"), // cursor Shift+Ctrl+Alt+F4
  },
},
{
  "F5",
  sizeof("F5") - 1,
  {
    KH("\033[15~"), // default F5
    KH("\033[15;3~"), // default Alt+F5
    KH("\033[15;5~"), // default Ctrl+F5
    KH("\033[15;7~"), // default Ctrl+Alt+F5
    KH("\033[15;2~"), // default Shift+F5
    KH("\033[15;4~"), // default Shift+Alt+F5
    KH("\033[15;6~"), // default Shift+Ctrl+F5
    KH("\033[15;8~"), // default Shift+Ctrl+Alt+F5
  },
  {
    KH("\033[15~"), // cursor F5
    KH("\033[15;3~"), // cursor Alt+F5
    KH("\033[15;5~"), // cursor Ctrl+F5
    KH("\033[15;7~"), // cursor Ctrl+Alt+F5
    KH("\033[15;2~"), // cursor Shift+F5
    KH("\033[15;4~"), // cursor Shift+Alt+F5
    KH("\033[15;6~"), // cursor Shift+Ctrl+F5
    KH("\033[15;8~"), // cursor Shift+Ctrl+Alt+F5
  },
},
{
  "F6",
  sizeof("F6") - 1,
  {
    KH("\033[17~"), // default F6
    KH("\033[17;3~"), // default Alt+F6
    KH("\033[17;5~"), // default Ctrl+F6
    KH("\033[17;7~"), // default Ctrl+Alt+F6
    KH("\033[17;2~"), // default Shift+F6
    KH("\033[17;4~"), // default Shift+Alt+F6
    KH("\033[17;6~"), // default Shift+Ctrl+F6
    KH("\033[17;8~"), // default Shift+Ctrl+Alt+F6
  },
  {
    KH("\033[17~"), // cursor F6
    KH("\033[17;3~"), // cursor Alt+F6
    KH("\033[17;5~"), // cursor Ctrl+F6
    KH("\033[17;7~"), // cursor Ctrl+Alt+F6
    KH("\033[17;2~"), // cursor Shift+F6
    KH("\033[17;4~"), // cursor Shift+Alt+F6
    KH("\033[17;6~"), // cursor Shift+Ctrl+F6
    KH("\033[17;8~"), // cursor Shift+Ctrl+Alt+F6
  },
},
{
  "F7",
  sizeof("F7") - 1,
  {
    KH("\033[18~"), // default F7
    KH("\033[18;3~"), // default Alt+F7
    KH("\033[18;5~"), // default Ctrl+F7
    KH("\033[18;7~"), // default Ctrl+Alt+F7
    KH("\033[18;2~"), // default Shift+F7
    KH("\033[18;4~"), // default Shift+Alt+F7
    KH("\033[18;6~"), // default Shift+Ctrl+F7
    KH("\033[18;8~"), // default Shift+Ctrl+Alt+F7
  },
  {
    KH("\033[18~"), // cursor F7
    KH("\033[18;3~"), // cursor Alt+F7
    KH("\033[18;5~"), // cursor Ctrl+F7
    KH("\033[18;7~"), // cursor Ctrl+Alt+F7
    KH("\033[18;2~"), // cursor Shift+F7
    KH("\033[18;4~"), // cursor Shift+Alt+F7
    KH("\033[18;6~"), // cursor Shift+Ctrl+F7
    KH("\033[18;8~"), // cursor Shift+Ctrl+Alt+F7
  },
},
{
  "F8",
  sizeof("F8") - 1,
  {
    KH("\033[19~"), // default F8
    KH("\033[19;3~"), // default Alt+F8
    KH("\033[19;5~"), // default Ctrl+F8
    KH("\033[19;7~"), // default Ctrl+Alt+F8
    KH("\033[19;2~"), // default Shift+F8
    KH("\033[19;4~"), // default Shift+Alt+F8
    KH("\033[19;6~"), // default Shift+Ctrl+F8
    KH("\033[19;8~"), // default Shift+Ctrl+Alt+F8
  },
  {
    KH("\033[19~"), // cursor F8
    KH("\033[19;3~"), // cursor Alt+F8
    KH("\033[19;5~"), // cursor Ctrl+F8
    KH("\033[19;7~"), // cursor Ctrl+Alt+F8
    KH("\033[19;2~"), // cursor Shift+F8
    KH("\033[19;4~"), // cursor Shift+Alt+F8
    KH("\033[19;6~"), // cursor Shift+Ctrl+F8
    KH("\033[19;8~"), // cursor Shift+Ctrl+Alt+F8
  },
},
{
  "F9",
  sizeof("F9") - 1,
  {
    KH("\033[20~"), // default F9
    KH("\033[20;3~"), // default Alt+F9
    KH("\033[20;5~"), // default Ctrl+F9
    KH("\033[20;7~"), // default Ctrl+Alt+F9
    KH("\033[20;2~"), // default Shift+F9
    KH("\033[20;4~"), // default Shift+Alt+F9
    KH("\033[20;6~"), // default Shift+Ctrl+F9
    KH("\033[20;8~"), // default Shift+Ctrl+Alt+F9
  },
  {
    KH("\033[20~"), // cursor F9
    KH("\033[20;3~"), // cursor Alt+F9
    KH("\033[20;5~"), // cursor Ctrl+F9
    KH("\033[20;7~"), // cursor Ctrl+Alt+F9
    KH("\033[20;2~"), // cursor Shift+F9
    KH("\033[20;4~"), // cursor Shift+Alt+F9
    KH("\033[20;6~"), // cursor Shift+Ctrl+F9
    KH("\033[20;8~"), // cursor Shift+Ctrl+Alt+F9
  },
},
{
  "F10",
  sizeof("F10") - 1,
  {
    KH("\033[21~"), // default F10
    KH("\033[21;3~"), // default Alt+F10
    KH("\033[21;5~"), // default Ctrl+F10
    KH("\033[21;7~"), // default Ctrl+Alt+F10
    KH("\033[21;2~"), // default Shift+F10
    KH("\033[21;4~"), // default Shift+Alt+F10
    KH("\033[21;6~"), // default Shift+Ctrl+F10
    KH("\033[21;8~"), // default Shift+Ctrl+Alt+F10
  },
  {
    KH("\033[21~"), // cursor F10
    KH("\033[21;3~"), // cursor Alt+F10
    KH("\033[21;5~"), // cursor Ctrl+F10
    KH("\033[21;7~"), // cursor Ctrl+Alt+F10
    KH("\033[21;2~"), // cursor Shift+F10
    KH("\033[21;4~"), // cursor Shift+Alt+F10
    KH("\033[21;6~"), // cursor Shift+Ctrl+F10
    KH("\033[21;8~"), // cursor Shift+Ctrl+Alt+F10
  },
},
{
  "F11",
  sizeof("F11") - 1,
  {
    KH("\033[23~"), // default F11
    KH("\033[23;3~"), // default Alt+F11
    KH("\033[23;5~"), // default Ctrl+F11
    KH("\033[23;7~"), // default Ctrl+Alt+F11
    KH("\033[23;2~"), // default Shift+F11
    KH("\033[23;4~"), // default Shift+Alt+F11
    KH("\033[23;6~"), // default Shift+Ctrl+F11
    KH("\033[23;8~"), // default Shift+Ctrl+Alt+F11
  },
  {
    KH("\033[23~"), // cursor F11
    KH("\033[23;3~"), // cursor Alt+F11
    KH("\033[23;5~"), // cursor Ctrl+F11
    KH("\033[23;7~"), // cursor Ctrl+Alt+F11
    KH("\033[23;2~"), // cursor Shift+F11
    KH("\033[23;4~"), // cursor Shift+Alt+F11
    KH("\033[23;6~"), // cursor Shift+Ctrl+F11
    KH("\033[23;8~"), // cursor Shift+Ctrl+Alt+F11
  },
},
{
  "F12",
  sizeof("F12") - 1,
  {
    KH("\033[24~"), // default F12
    KH("\033[24;3~"), // default Alt+F12
    KH("\033[24;5~"), // default Ctrl+F12
    KH("\033[24;7~"), // default Ctrl+Alt+F12
    KH("\033[24;2~"), // default Shift+F12
    KH("\033[24;4~"), // default Shift+Alt+F12
    KH("\033[24;6~"), // default Shift+Ctrl+F12
    KH("\033[24;8~"), // default Shift+Ctrl+Alt+F12
  },
  {
    KH("\033[24~"), // cursor F12
    KH("\033[24;3~"), // cursor Alt+F12
    KH("\033[24;5~"), // cursor Ctrl+F12
    KH("\033[24;7~"), // cursor Ctrl+Alt+F12
    KH("\033[24;2~"), // cursor Shift+F12
    KH("\033[24;4~"), // cursor Shift+Alt+F12
    KH("\033[24;6~"), // cursor Shift+Ctrl+F12
    KH("\033[24;8~"), // cursor Shift+Ctrl+Alt+F12
  },
},
{
  "Left",
  sizeof("Left") - 1,
  {
    KH("\033[D"), // default Left
    KH("\033[1;3D"), // default Alt+Left
    KH("\033[1;5D"), // default Ctrl+Left
    KH("\033[1;7D"), // default Ctrl+Alt+Left
    KH("\033[1;2D"), // default Shift+Left
    KH("\033[1;4D"), // default Shift+Alt+Left
    KH("\033[1;6D"), // default Shift+Ctrl+Left
    KH("\033[1;8D"), // default Shift+Ctrl+Alt+Left
  },
  {
    KH("\033OD"), // cursor Left
    KH("\033[1;3D"), // cursor Alt+Left
    KH("\033[1;5D"), // cursor Ctrl+Left
    KH("\033[1;7D"), // cursor Ctrl+Alt+Left
    KH("\033[1;2D"), // cursor Shift+Left
    KH("\033[1;4D"), // cursor Shift+Alt+Left
    KH("\033[1;6D"), // cursor Shift+Ctrl+Left
    KH("\033[1;8D"), // cursor Shift+Ctrl+Alt+Left
  },
},
{
  "Right",
  sizeof("Right") - 1,
  {
    KH("\033[C"), // default Right
    KH("\033[1;3C"), // default Alt+Right
    KH("\033[1;5C"), // default Ctrl+Right
    KH("\033[1;7C"), // default Ctrl+Alt+Right
    KH("\033[1;2C"), // default Shift+Right
    KH("\033[1;4C"), // default Shift+Alt+Right
    KH("\033[1;6C"), // default Shift+Ctrl+Right
    KH("\033[1;8C"), // default Shift+Ctrl+Alt+Right
  },
  {
    KH("\033OC"), // cursor Right
    KH("\033[1;3C"), // cursor Alt+Right
    KH("\033[1;5C"), // cursor Ctrl+Right
    KH("\033[1;7C"), // cursor Ctrl+Alt+Right
    KH("\033[1;2C"), // cursor Shift+Right
    KH("\033[1;4C"), // cursor Shift+Alt+Right
    KH("\033[1;6C"), // cursor Shift+Ctrl+Right
    KH("\033[1;8C"), // cursor Shift+Ctrl+Alt+Right
  },
},
{
  "Up",
  sizeof("Up") - 1,
  {
    KH("\033[A"), // default Up
    KH("\033[1;3A"), // default Alt+Up
    KH("\033[1;5A"), // default Ctrl+Up
    KH("\033[1;7A"), // default Ctrl+Alt+Up
    KH("\033[1;2A"), // default Shift+Up
    KH("\033[1;4A"), // default Shift+Alt+Up
    {NULL, 0}, // default Shift+Ctrl+Up
    {NULL, 0}, // default Shift+Ctrl+Alt+Up
  },
  {
    KH("\033OA"), // cursor Up
    KH("\033[1;3A"), // cursor Alt+Up
    KH("\033[1;5A"), // cursor Ctrl+Up
    KH("\033[1;7A"), // cursor Ctrl+Alt+Up
    KH("\033[1;2A"), // cursor Shift+Up
    KH("\033[1;4A"), // cursor Shift+Alt+Up
    {NULL, 0}, // cursor Shift+Ctrl+Up
    {NULL, 0}, // cursor Shift+Ctrl+Alt+Up
  },
},
{
  "Down",
  sizeof("Down") - 1,
  {
    KH("\033[B"), // default Down
    KH("\033[1;3B"), // default Alt+Down
    KH("\033[1;5B"), // default Ctrl+Down
    KH("\033[1;7B"), // default Ctrl+Alt+Down
    KH("\033[1;2B"), // default Shift+Down
    KH("\033[1;4B"), // default Shift+Alt+Down
    KH("\033[1;6B"), // default Shift+Ctrl+Down
    KH("\033[1;8B"), // default Shift+Ctrl+Alt+Down
  },
  {
    KH("\033OB"), // cursor Down
    KH("\033[1;3B"), // cursor Alt+Down
    KH("\033[1;5B"), // cursor Ctrl+Down
    KH("\033[1;7B"), // cursor Ctrl+Alt+Down
    KH("\033[1;2B"), // cursor Shift+Down
    KH("\033[1;4B"), // cursor Shift+Alt+Down
    KH("\033[1;6B"), // cursor Shift+Ctrl+Down
    KH("\033[1;8B"), // cursor Shift+Ctrl+Alt+Down
  },
},
{
  "Home",
  sizeof("Home") - 1,
  {
    KH("\033[H"), // default Home
    KH("\033[1;3H"), // default Alt+Home
    KH("\033[1;5H"), // default Ctrl+Home
    KH("\033[1;7H"), // default Ctrl+Alt+Home
    KH("\033[1;2H"), // default Shift+Home
    KH("\033[1;4H"), // default Shift+Alt+Home
    KH("\033[1;6H"), // default Shift+Ctrl+Home
    KH("\033[1;8H"), // default Shift+Ctrl+Alt+Home
  },
  {
    KH("\033OH"), // cursor Home
    KH("\033[1;3H"), // cursor Alt+Home
    KH("\033[1;5H"), // cursor Ctrl+Home
    KH("\033[1;7H"), // cursor Ctrl+Alt+Home
    KH("\033[1;2H"), // cursor Shift+Home
    KH("\033[1;4H"), // cursor Shift+Alt+Home
    KH("\033[1;6H"), // cursor Shift+Ctrl+Home
    KH("\033[1;8H"), // cursor Shift+Ctrl+Alt+Home
  },
},
{
  "End",
  sizeof("End") - 1,
  {
    KH("\033[F"), // default End
    KH("\033[1;3F"), // default Alt+End
    KH("\033[1;5F"), // default Ctrl+End
    KH("\033[1;7F"), // default Ctrl+Alt+End
    KH("\033[1;2F"), // default Shift+End
    KH("\033[1;4F"), // default Shift+Alt+End
    KH("\033[1;6F"), // default Shift+Ctrl+End
    KH("\033[1;8F"), // default Shift+Ctrl+Alt+End
  },
  {
    KH("\033OF"), // cursor End
    KH("\033[1;3F"), // cursor Alt+End
    KH("\033[1;5F"), // cursor Ctrl+End
    KH("\033[1;7F"), // cursor Ctrl+Alt+End
    KH("\033[1;2F"), // cursor Shift+End
    KH("\033[1;4F"), // cursor Shift+Alt+End
    KH("\033[1;6F"), // cursor Shift+Ctrl+End
    KH("\033[1;8F"), // cursor Shift+Ctrl+Alt+End
  },
},
{
  "Insert",
  sizeof("Insert") - 1,
  {
    KH("\033[2~"), // default Insert
    KH("\033[2;3~"), // default Alt+Insert
    KH("\033[2;5~"), // default Ctrl+Insert
    KH("\033[2;7~"), // default Ctrl+Alt+Insert
    KH("\033[2;2~"), // default Shift+Insert
    KH("\033[2;4~"), // default Shift+Alt+Insert
    KH("\033[2;6~"), // default Shift+Ctrl+Insert
    KH("\033[2;8~"), // default Shift+Ctrl+Alt+Insert
  },
  {
    KH("\033[2~"), // cursor Insert
    KH("\033[2;3~"), // cursor Alt+Insert
    KH("\033[2;5~"), // cursor Ctrl+Insert
    KH("\033[2;7~"), // cursor Ctrl+Alt+Insert
    KH("\033[2;2~"), // cursor Shift+Insert
    KH("\033[2;4~"), // cursor Shift+Alt+Insert
    KH("\033[2;6~"), // cursor Shift+Ctrl+Insert
    KH("\033[2;8~"), // cursor Shift+Ctrl+Alt+Insert
  },
},
{
  "Delete",
  sizeof("Delete") - 1,
  {
    KH("\033[3~"), // default Delete
    KH("\033[3;3~"), // default Alt+Delete
    KH("\033[3;5~"), // default Ctrl+Delete
    KH("\033[3;7~"), // default Ctrl+Alt+Delete
    KH("\033[3;2~"), // default Shift+Delete
    KH("\033[3;4~"), // default Shift+Alt+Delete
    KH("\033[3;6~"), // default Shift+Ctrl+Delete
    KH("\033[3;8~"), // default Shift+Ctrl+Alt+Delete
  },
  {
    KH("\033[3~"), // cursor Delete
    KH("\033[3;3~"), // cursor Alt+Delete
    KH("\033[3;5~"), // cursor Ctrl+Delete
    KH("\033[3;7~"), // cursor Ctrl+Alt+Delete
    KH("\033[3;2~"), // cursor Shift+Delete
    KH("\033[3;4~"), // cursor Shift+Alt+Delete
    KH("\033[3;6~"), // cursor Shift+Ctrl+Delete
    KH("\033[3;8~"), // cursor Shift+Ctrl+Alt+Delete
  },
},
{
  "Prior",
  sizeof("Prior") - 1,
  {
    KH("\033[5~"), // default Prior
    KH("\033[5;3~"), // default Alt+Prior
    KH("\033[5;5~"), // default Ctrl+Prior
    KH("\033[5;7~"), // default Ctrl+Alt+Prior
    KH("\033[5;2~"), // default Shift+Prior
    KH("\033[5;4~"), // default Shift+Alt+Prior
    KH("\033[5;6~"), // default Shift+Ctrl+Prior
    KH("\033[5;8~"), // default Shift+Ctrl+Alt+Prior
  },
  {
    KH("\033[5~"), // cursor Prior
    KH("\033[5;3~"), // cursor Alt+Prior
    KH("\033[5;5~"), // cursor Ctrl+Prior
    KH("\033[5;7~"), // cursor Ctrl+Alt+Prior
    KH("\033[5;2~"), // cursor Shift+Prior
    KH("\033[5;4~"), // cursor Shift+Alt+Prior
    KH("\033[5;6~"), // cursor Shift+Ctrl+Prior
    KH("\033[5;8~"), // cursor Shift+Ctrl+Alt+Prior
  },
},
{
  "Next",
  sizeof("Next") - 1,
  {
    KH("\033[6~"), // default Next
    KH("\033[6;3~"), // default Alt+Next
    KH("\033[6;5~"), // default Ctrl+Next
    KH("\033[6;7~"), // default Ctrl+Alt+Next
    KH("\033[6;2~"), // default Shift+Next
    KH("\033[6;4~"), // default Shift+Alt+Next
    KH("\033[6;6~"), // default Shift+Ctrl+Next
    KH("\033[6;8~"), // default Shift+Ctrl+Alt+Next
  },
  {
    KH("\033[6~"), // cursor Next
    KH("\033[6;3~"), // cursor Alt+Next
    KH("\033[6;5~"), // cursor Ctrl+Next
    KH("\033[6;7~"), // cursor Ctrl+Alt+Next
    KH("\033[6;2~"), // cursor Shift+Next
    KH("\033[6;4~"), // cursor Shift+Alt+Next
    KH("\033[6;6~"), // cursor Shift+Ctrl+Next
    KH("\033[6;8~"), // cursor Shift+Ctrl+Alt+Next
  },
},
{
  "ISO_Left_Tab",
  sizeof("ISO_Left_Tab") - 1,
  {
    KH("\t"), // default Tab
    KH("\x89"), // default Alt+Tab
    KH("\t"), // default Ctrl+Tab
    KH("\x89"), // default Ctrl+Alt+Tab
    KH("\033[Z"), // default Shift+Tab
    KH("\033[Z"), // default Shift+Alt+Tab
    KH("\033[Z"), // default Shift+Ctrl+Tab
    KH("\033[Z"), // default Shift+Ctrl+Alt+Tab
  },
  {
    KH("\t"), // cursor Tab
    KH("\x89"), // cursor Alt+Tab
    KH("\t"), // cursor Ctrl+Tab
    KH("\x89"), // cursor Ctrl+Alt+Tab
    KH("\033[Z"), // cursor Shift+Tab
    KH("\033[Z"), // cursor Shift+Alt+Tab
    KH("\033[Z"), // cursor Shift+Ctrl+Tab
    KH("\033[Z"), // cursor Shift+Ctrl+Alt+Tab
  },
},
{
  "Tab",
  sizeof("Tab") - 1,
  {
    KH("\t"), // default Tab
    KH("\x89"), // default Alt+Tab
    KH("\t"), // default Ctrl+Tab
    KH("\x89"), // default Ctrl+Alt+Tab
    KH("\033[Z"), // default Shift+Tab
    KH("\033[Z"), // default Shift+Alt+Tab
    KH("\033[Z"), // default Shift+Ctrl+Tab
    KH("\033[Z"), // default Shift+Ctrl+Alt+Tab
  },
  {
    KH("\t"), // cursor Tab
    KH("\x89"), // cursor Alt+Tab
    KH("\t"), // cursor Ctrl+Tab
    KH("\x89"), // cursor Ctrl+Alt+Tab
    KH("\033[Z"), // cursor Shift+Tab
    KH("\033[Z"), // cursor Shift+Alt+Tab
    KH("\033[Z"), // cursor Shift+Ctrl+Tab
    KH("\033[Z"), // cursor Shift+Ctrl+Alt+Tab
  },
},
{
  "minus",
  sizeof("minus") - 1,
  {
    KH("-"), // default minus
    KH("\033-"), // default Alt+minus
    KH("\x1f"), // default Ctrl+minus
    KH("\033-"), // default Ctrl+Alt+minus
    KH("_"), // default Shift+minus
    KH("\xdf"), // default Shift+Alt+minus
    KH("\x1f"), // default Shift+Ctrl+minus
    KH("\x9f"), // default Shift+Ctrl+Alt+minus
  },
  {
    KH("-"), // cursor minus
    KH("\033-"), // cursor Alt+minus
    KH("\x1f"), // cursor Ctrl+minus
    KH("\033-"), // cursor Ctrl+Alt+minus
    KH("_"), // cursor Shift+minus
    KH("\xdf"), // cursor Shift+Alt+minus
    KH("\x1f"), // cursor Shift+Ctrl+minus
    KH("\x9f"), // cursor Shift+Ctrl+Alt+minus
  },
},
{
  "underscore",
  sizeof("underscore") - 1,
  {
    KH("_"), // default underscore
    KH("\033_"), // default Alt+underscore
    KH("\x1f"), // default Ctrl+underscore
    KH("\x9f"), // default Ctrl+Alt+underscore
    KH("_"), // default Shift+underscore
    KH("\033_"), // default Shift+Alt+underscore
    KH("\x1f"), // default Shift+Ctrl+underscore
    KH("\x9f"), // default Shift+Ctrl+Alt+underscore
  },
  {
    KH("_"), // cursor underscore
    KH("\033_"), // cursor Alt+underscore
    KH("\x1f"), // cursor Ctrl+underscore
    KH("\x9f"), // cursor Ctrl+Alt+underscore
    KH("_"), // cursor Shift+underscore
    KH("\033_"), // cursor Shift+Alt+underscore
    KH("\x1f"), // cursor Shift+Ctrl+underscore
    KH("\x9f"), // cursor Shift+Ctrl+Alt+underscore
  },
},
{
  "space",
  sizeof("space") - 1,
  {
    KH(" "), // default space
    KH("\xa0"), // default Alt+space
    KH("\0"), // default Ctrl+space
    KH("\x80"), // default Ctrl+Alt+space
    KH(" "), // default Shift+space
    KH("\xa0"), // default Shift+Alt+space
    KH("\0"), // default Shift+Ctrl+space
    KH("\x80"), // default Shift+Ctrl+Alt+space
  },
  {
    KH(" "), // cursor space
    KH("\xa0"), // cursor Alt+space
    KH("\0"), // cursor Ctrl+space
    KH("\x80"), // cursor Ctrl+Alt+space
    KH(" "), // cursor Shift+space
    KH("\xa0"), // cursor Shift+Alt+space
    KH("\0"), // cursor Shift+Ctrl+space
    KH("\x80"), // cursor Shift+Ctrl+Alt+space
  },
},
{
  "Menu",
  sizeof("Menu") - 1,
  {
    KH("\033[29~"), // default Menu
    KH("\033[29;3~"), // default Alt+Menu
    KH("\033[29;5~"), // default Ctrl+Menu
    KH("\033[29;7~"), // default Ctrl+Alt+Menu
    KH("\033[29;2~"), // default Shift+Menu
    KH("\033[29;4~"), // default Shift+Alt+Menu
    KH("\033[29;6~"), // default Shift+Ctrl+Menu
    KH("\033[29;8~"), // default Shift+Ctrl+Alt+Menu
  },
  {
    KH("\033[29~"), // cursor Menu
    KH("\033[29;3~"), // cursor Alt+Menu
    KH("\033[29;5~"), // cursor Ctrl+Menu
    KH("\033[29;7~"), // cursor Ctrl+Alt+Menu
    KH("\033[29;2~"), // cursor Shift+Menu
    KH("\033[29;4~"), // cursor Shift+Alt+Menu
    KH("\033[29;6~"), // cursor Shift+Ctrl+Menu
    KH("\033[29;8~"), // cursor Shift+Ctrl+Alt+Menu
  },
},
{
  "Find",
  sizeof("Find") - 1,
  {
    KH("\033[1~"), // default Find
    KH("\033[1;3~"), // default Alt+Find
    KH("\033[1;5~"), // default Ctrl+Find
    KH("\033[1;7~"), // default Ctrl+Alt+Find
    KH("\033[1;2~"), // default Shift+Find
    KH("\033[1;4~"), // default Shift+Alt+Find
    KH("\033[1;6~"), // default Shift+Ctrl+Find
    KH("\033[1;8~"), // default Shift+Ctrl+Alt+Find
  },
  {
    KH("\033[1~"), // cursor Find
    KH("\033[1;3~"), // cursor Alt+Find
    KH("\033[1;5~"), // cursor Ctrl+Find
    KH("\033[1;7~"), // cursor Ctrl+Alt+Find
    KH("\033[1;2~"), // cursor Shift+Find
    KH("\033[1;4~"), // cursor Shift+Alt+Find
    KH("\033[1;6~"), // cursor Shift+Ctrl+Find
    KH("\033[1;8~"), // cursor Shift+Ctrl+Alt+Find
  },
},
{
  "Help",
  sizeof("Help") - 1,
  {
    KH("\033[28~"), // cursor Help
    KH("\033[28;3~"), // default Alt+Help
    KH("\033[28;5~"), // default Ctrl+Help
    KH("\033[28;7~"), // default Ctrl+Alt+Help
    KH("\033[28;2~"), // default Shift+Help
    KH("\033[28;4~"), // default Shift+Alt+Help
    KH("\033[28;6~"), // default Shift+Ctrl+Help
    KH("\033[28;8~"), // default Shift+Ctrl+Alt+Help
  },
  {
    KH("\033[28~"), // cursor Help
    KH("\033[28;3~"), // cursor Alt+Help
    KH("\033[28;5~"), // cursor Ctrl+Help
    KH("\033[28;7~"), // cursor Ctrl+Alt+Help
    KH("\033[28;2~"), // cursor Shift+Help
    KH("\033[28;4~"), // cursor Shift+Alt+Help
    KH("\033[28;6~"), // cursor Shift+Ctrl+Help
    KH("\033[28;8~"), // cursor Shift+Ctrl+Alt+Help
  },
},
{
  "Execute",
  sizeof("Execute") - 1,
  {
    KH("\033[3~"), // default Execute
    KH("\033[3;3~"), // default Alt+Execute
    KH("\033[3;5~"), // default Ctrl+Execute
    KH("\033[3;7~"), // default Ctrl+Alt+Execute
    KH("\033[3;2~"), // default Shift+Execute
    KH("\033[3;4~"), // default Shift+Alt+Execute
    KH("\033[3;6~"), // default Shift+Ctrl+Execute
    KH("\033[3;8~"), // default Shift+Ctrl+Alt+Execute
  },
  {
    KH("\033[3~"), // cursor Execute
    KH("\033[3;3~"), // cursor Alt+Execute
    KH("\033[3;5~"), // cursor Ctrl+Execute
    KH("\033[3;7~"), // cursor Ctrl+Alt+Execute
    KH("\033[3;2~"), // cursor Shift+Execute
    KH("\033[3;4~"), // cursor Shift+Alt+Execute
    KH("\033[3;6~"), // cursor Shift+Ctrl+Execute
    KH("\033[3;8~"), // cursor Shift+Ctrl+Alt+Execute
  },
},
{
  "Select",
  sizeof("Select") - 1,
  {
    KH("\033[4~"), // default Select
    KH("\033[4;3~"), // default Alt+Select
    KH("\033[4;5~"), // default Ctrl+Select
    KH("\033[4;7~"), // default Ctrl+Alt+Select
    KH("\033[4;2~"), // default Shift+Select
    KH("\033[4;4~"), // default Shift+Alt+Select
    KH("\033[4;6~"), // default Shift+Ctrl+Select
    KH("\033[4;8~"), // default Shift+Ctrl+Alt+Select
  },
  {
    KH("\033[4~"), // cursor Select
    KH("\033[4;3~"), // cursor Alt+Select
    KH("\033[4;5~"), // cursor Ctrl+Select
    KH("\033[4;7~"), // cursor Ctrl+Alt+Select
    KH("\033[4;2~"), // cursor Shift+Select
    KH("\033[4;4~"), // cursor Shift+Alt+Select
    KH("\033[4;6~"), // cursor Shift+Ctrl+Select
    KH("\033[4;8~"), // cursor Shift+Ctrl+Alt+Select
  },
},
};
static const Tty_Key tty_keys_kp_plain[] = {
{
  "KP_Up",
  sizeof("KP_Up") - 1,
  {
    KH("\033[A"), // default KP_Up
    KH("\033[A"), // default Alt+KP_Up
    KH("\033[A"), // default Ctrl+KP_Up
    KH("\033[A"), // default Ctrl+Alt+KP_Up
    KH("8"), // default Shift+KP_Up
    KH("8"), // default Shift+Alt+KP_Up
    KH("8"), // default Shift+Ctrl+KP_Up
    KH("8"), // default Shift+Ctrl+Alt+KP_Up
  },
  {
    KH("\033OA"), // cursor KP_Up
    KH("\033OA"), // cursor Alt+KP_Up
    KH("\033OA"), // cursor Ctrl+KP_Up
    KH("\033OA"), // cursor Ctrl+Alt+KP_Up
    KH("8"), // cursor Shift+KP_Up
    KH("8"), // cursor Shift+Alt+KP_Up
    KH("8"), // cursor Shift+Ctrl+KP_Up
    KH("8"), // cursor Shift+Ctrl+Alt+KP_Up
  },
},
{
  "KP_Down",
  sizeof("KP_Down") - 1,
  {
    KH("\033[B"), // default KP_Down
    KH("\033[B"), // default Alt+KP_Down
    KH("\033[B"), // default Ctrl+KP_Down
    KH("\033[B"), // default Ctrl+Alt+KP_Down
    KH("2"), // default Shift+KP_Down
    KH("2"), // default Shift+Alt+KP_Down
    KH("2"), // default Shift+Ctrl+KP_Down
    KH("2"), // default Shift+Ctrl+Alt+KP_Down
  },
  {
    KH("\033OB"), // cursor KP_Down
    KH("\033OB"), // cursor Alt+KP_Down
    KH("\033OB"), // cursor Ctrl+KP_Down
    KH("\033OB"), // cursor Ctrl+Alt+KP_Down
    KH("2"), // cursor Shift+KP_Down
    KH("2"), // cursor Shift+Alt+KP_Down
    KH("2"), // cursor Shift+Ctrl+KP_Down
    KH("2"), // cursor Shift+Ctrl+Alt+KP_Down
  },
},
{
  "KP_Right",
  sizeof("KP_Right") - 1,
  {
    KH("\033[C"), // default KP_Right
    KH("\033[C"), // default Alt+KP_Right
    KH("\033[C"), // default Ctrl+KP_Right
    KH("\033[C"), // default Ctrl+Alt+KP_Right
    KH("6"), // default Shift+KP_Right
    KH("6"), // default Shift+Alt+KP_Right
    KH("6"), // default Shift+Ctrl+KP_Right
    KH("6"), // default Shift+Ctrl+Alt+KP_Right
  },
  {
    KH("\033OC"), // cursor KP_Right
    KH("\033OC"), // cursor Alt+KP_Right
    KH("\033OC"), // cursor Ctrl+KP_Right
    KH("\033OC"), // cursor Ctrl+Alt+KP_Right
    KH("6"), // cursor Shift+KP_Right
    KH("6"), // cursor Shift+Alt+KP_Right
    KH("6"), // cursor Shift+Ctrl+KP_Right
    KH("6"), // cursor Shift+Ctrl+Alt+KP_Right
  },
},
{
  "KP_Left",
  sizeof("KP_Left") - 1,
  {
    KH("\033[D"), // default KP_Left
    KH("\033[D"), // default Alt+KP_Left
    KH("\033[D"), // default Ctrl+KP_Left
    KH("\033[D"), // default Ctrl+Alt+KP_Left
    KH("4"), // default Shift+KP_Left
    KH("4"), // default Shift+Alt+KP_Left
    KH("4"), // default Shift+Ctrl+KP_Left
    KH("4"), // default Shift+Ctrl+Alt+KP_Left
  },
  {
    KH("\033OD"), // cursor KP_Left
    KH("\033OD"), // cursor Alt+KP_Left
    KH("\033OD"), // cursor Ctrl+KP_Left
    KH("\033OD"), // cursor Ctrl+Alt+KP_Left
    KH("4"), // cursor Shift+KP_Left
    KH("4"), // cursor Shift+Alt+KP_Left
    KH("4"), // cursor Shift+Ctrl+KP_Left
    KH("4"), // cursor Shift+Ctrl+Alt+KP_Left
  },
},
{
  "KP_Insert",
  sizeof("KP_Insert") - 1,
  {
    KH("\033[2~"), // default KP_Insert
    KH("\033[2;3~"), // default Alt+KP_Insert
    KH("\033[2;5~"), // default Ctrl+KP_Insert
    KH("\033[2;7~"), // default Ctrl+Alt+KP_Insert
    KH("\033[2;2~"), // default Shift+KP_Insert
    KH("\033[2;4~"), // default Shift+Alt+KP_Insert
    KH("\033[2;6~"), // default Shift+Ctrl+KP_Insert
    KH("\033[2;8~"), // default Shift+Ctrl+Alt+KP_Insert
  },
  {
    KH("\033[2~"), // cursor KP_Insert
    KH("\033[2;3~"), // cursor Alt+KP_Insert
    KH("\033[2;5~"), // cursor Ctrl+KP_Insert
    KH("\033[2;7~"), // cursor Ctrl+Alt+KP_Insert
    KH("\033[2;2~"), // cursor Shift+KP_Insert
    KH("\033[2;4~"), // cursor Shift+Alt+KP_Insert
    KH("\033[2;6~"), // cursor Shift+Ctrl+KP_Insert
    KH("\033[2;8~"), // cursor Shift+Ctrl+Alt+KP_Insert
  },
},
{
  "KP_Delete",
  sizeof("KP_Delete") - 1,
  {
    KH("\033[3~"), // default KP_Delete
    KH("\033[3;3~"), // default Alt+KP_Delete
    KH("\033[3;5~"), // default Ctrl+KP_Delete
    KH("\033[3;7~"), // default Ctrl+Alt+KP_Delete
    KH("."), // default Shift+KP_Delete
    KH("."), // default Shift+Alt+KP_Delete
    KH("."), // default Shift+Ctrl+KP_Delete
    KH("."), // default Shift+Ctrl+Alt+KP_Delete
  },
  {
    KH("\033[3~"), // cursor KP_Delete
    KH("\033[3;3~"), // cursor Alt+KP_Delete
    KH("\033[3;5~"), // cursor Ctrl+KP_Delete
    KH("\033[3;7~"), // cursor Ctrl+Alt+KP_Delete
    KH("."), // cursor Shift+KP_Delete
    KH("."), // cursor Shift+Alt+KP_Delete
    KH("."), // cursor Shift+Ctrl+KP_Delete
    KH("."), // cursor Shift+Ctrl+Alt+KP_Delete
  },
},
{
  "KP_Home",
  sizeof("KP_Home") - 1,
  {
    KH("\033[H"), // default KP_Home
    KH("\033[H"), // default Alt+KP_Home
    KH("\033[H"), // default Ctrl+KP_Home
    KH("\033[H"), // default Ctrl+Alt+KP_Home
    KH("\033[H"), // default Shift+KP_Home
    KH("\033[H"), // default Shift+Alt+KP_Home
    KH("\033[H"), // default Shift+Ctrl+KP_Home
    KH("\033[H"), // default Shift+Ctrl+Alt+KP_Home
  },
  {
    KH("\033OH"), // cursor KP_Home
    KH("\033OH"), // cursor Alt+KP_Home
    KH("\033OH"), // cursor Ctrl+KP_Home
    KH("\033OH"), // cursor Ctrl+Alt+KP_Home
    KH("\033OH"), // cursor Shift+KP_Home
    KH("\033OH"), // cursor Shift+Alt+KP_Home
    KH("\033OH"), // cursor Shift+Ctrl+KP_Home
    KH("\033OH"), // cursor Shift+Ctrl+Alt+KP_Home
  },
},
{
  "KP_Prior",
  sizeof("KP_Prior") - 1,
  {
    KH("\033[5~"), // default KP_Prior
    KH("\033[5~"), // default Alt+KP_Prior
    KH("\033[5~"), // default Ctrl+KP_Prior
    KH("\033[5~"), // default Ctrl+Alt+KP_Prior
    KH("\033[5~"), // default Shift+KP_Prior
    KH("\033[5~"), // default Shift+Alt+KP_Prior
    KH("\033[5~"), // default Shift+Ctrl+KP_Prior
    KH("\033[5~"), // default Shift+Ctrl+Alt+KP_Prior
  },
  {
    KH("\033[5~"), // cursor KP_Prior
    KH("\033[5~"), // cursor Alt+KP_Prior
    KH("\033[5~"), // cursor Ctrl+KP_Prior
    KH("\033[5~"), // cursor Ctrl+Alt+KP_Prior
    KH("\033[5~"), // cursor Shift+KP_Prior
    KH("\033[5~"), // cursor Shift+Alt+KP_Prior
    KH("\033[5~"), // cursor Shift+Ctrl+KP_Prior
    KH("\033[5~"), // cursor Shift+Ctrl+Alt+KP_Prior
  },
},
{
  "KP_Next",
  sizeof("KP_Next") - 1,
  {
    KH("\033[6~"), // default KP_Next
    KH("\033[6~"), // default Alt+KP_Next
    KH("\033[6~"), // default Ctrl+KP_Next
    KH("\033[6~"), // default Ctrl+Alt+KP_Next
    KH("\033[6~"), // default Shift+KP_Next
    KH("\033[6~"), // default Shift+Alt+KP_Next
    KH("\033[6~"), // default Shift+Ctrl+KP_Next
    KH("\033[6~"), // default Shift+Ctrl+Alt+KP_Next
  },
  {
    KH("\033[6~"), // cursor KP_Next
    KH("\033[6~"), // cursor Alt+KP_Next
    KH("\033[6~"), // cursor Ctrl+KP_Next
    KH("\033[6~"), // cursor Ctrl+Alt+KP_Next
    KH("\033[6~"), // cursor Shift+KP_Next
    KH("\033[6~"), // cursor Shift+Alt+KP_Next
    KH("\033[6~"), // cursor Shift+Ctrl+KP_Next
    KH("\033[6~"), // cursor Shift+Ctrl+Alt+KP_Next
  },
},
{
  "KP_Begin",
  sizeof("KP_Begin") - 1,
  {
    KH("\033[E"), // default KP_Begin
    KH("\033[E"), // default Alt+KP_Begin
    KH("\033[E"), // default Ctrl+KP_Begin
    KH("\033[E"), // default Ctrl+Alt+KP_Begin
    KH("5"), // default Shift+KP_Begin
    KH("5"), // default Shift+Alt+KP_Begin
    KH("5"), // default Shift+Ctrl+KP_Begin
    KH("5"), // default Shift+Ctrl+Alt+KP_Begin
  },
  {
    KH("\033OE"), // cursor KP_Begin
    KH("\033OE"), // cursor Alt+KP_Begin
    KH("\033OE"), // cursor Ctrl+KP_Begin
    KH("\033OE"), // cursor Ctrl+Alt+KP_Begin
    KH("5"), // cursor Shift+KP_Begin
    KH("5"), // cursor Shift+Alt+KP_Begin
    KH("5"), // cursor Shift+Ctrl+KP_Begin
    KH("5"), // cursor Shift+Ctrl+Alt+KP_Begin
  },
},
{
  "KP_End",
  sizeof("KP_End") - 1,
  {
    KH("\033[F"), // default KP_End
    KH("\033[F"), // default Alt+KP_End
    KH("\033[F"), // default Ctrl+KP_End
    KH("\033[F"), // default Ctrl+Alt+KP_End
    KH("\033[F"), // default Shift+KP_End
    KH("\033[F"), // default Shift+Alt+KP_End
    KH("\033[F"), // default Shift+Ctrl+KP_End
    KH("\033[F"), // default Shift+Ctrl+Alt+KP_End
  },
  {
    KH("\033OF"), // cursor KP_End
    KH("\033OF"), // cursor Alt+KP_End
    KH("\033OF"), // cursor Ctrl+KP_End
    KH("\033OF"), // cursor Ctrl+Alt+KP_End
    KH("\033OF"), // cursor Shift+KP_End
    KH("\033OF"), // cursor Shift+Alt+KP_End
    KH("\033OF"), // cursor Shift+Ctrl+KP_End
    KH("\033OF"), // cursor Shift+Ctrl+Alt+KP_End
  },
},
};
static const Tty_Key tty_keys_kp_app[] = {
{
  "KP_Up",
  sizeof("KP_Up") - 1,
  {
    KH("\033[A"), // default KP_Up
    KH("\033[1;3A"), // default Alt+KP_Up
    KH("\033[1;5A"), // default Ctrl+KP_Up
    KH("\033[1;7A"), // default Ctrl+Alt+KP_Up
    KH("\033O2x"), // default Shift+KP_Up
    KH("\033O4x"), // default Shift+Alt+KP_Up
    KH("\033O6x"), // default Shift+Ctrl+KP_Up
    KH("\033O8x"), // default Shift+Ctrl+Alt+KP_Up
  },
  {
    KH("\033OA"), // cursor KP_Up
    KH("\033[1;3A"), // cursor Alt+KP_Up
    KH("\033[1;5A"), // cursor Ctrl+KP_Up
    KH("\033[1;7A"), // cursor Ctrl+Alt+KP_Up
    KH("\033O2x"), // cursor Shift+KP_Up
    KH("\033O4x"), // cursor Shift+Alt+KP_Up
    KH("\033O6x"), // cursor Shift+Ctrl+KP_Up
    KH("\033O8x"), // cursor Shift+Ctrl+Alt+KP_Up
  },
},
{
  "KP_Down",
  sizeof("KP_Down") - 1,
  {
    KH("\033[B"), // default KP_Down
    KH("\033[1;3B"), // default Alt+KP_Down
    KH("\033[1;5B"), // default Ctrl+KP_Down
    KH("\033[1;7B"), // default Ctrl+Alt+KP_Down
    KH("\033O2r"), // default Shift+KP_Down
    KH("\033O4r"), // default Shift+Alt+KP_Down
    KH("\033O6r"), // default Shift+Ctrl+KP_Down
    KH("\033O8r"), // default Shift+Ctrl+Alt+KP_Down
  },
  {
    KH("\033OB"), // cursor KP_Down
    KH("\033[1;3B"), // cursor Alt+KP_Down
    KH("\033[1;5B"), // cursor Ctrl+KP_Down
    KH("\033[1;7B"), // cursor Ctrl+Alt+KP_Down
    KH("\033O2r"), // cursor Shift+KP_Down
    KH("\033O4r"), // cursor Shift+Alt+KP_Down
    KH("\033O6r"), // cursor Shift+Ctrl+KP_Down
    KH("\033O8r"), // cursor Shift+Ctrl+Alt+KP_Down
  },
},
{
  "KP_Right",
  sizeof("KP_Right") - 1,
  {
    KH("\033[C"), // default KP_Right
    KH("\033[1;3C"), // default Alt+KP_Right
    KH("\033[1;5C"), // default Ctrl+KP_Right
    KH("\033[1;7C"), // default Ctrl+Alt+KP_Right
    KH("\033O2v"), // default Shift+KP_Right
    KH("\033O4v"), // default Shift+Alt+KP_Right
    KH("\033O6v"), // default Shift+Ctrl+KP_Right
    KH("\033O8v"), // default Shift+Ctrl+Alt+KP_Right
  },
  {
    KH("\033OC"), // cursor KP_Right
    KH("\033[1;3C"), // cursor Alt+KP_Right
    KH("\033[1;5C"), // cursor Ctrl+KP_Right
    KH("\033[1;7C"), // cursor Ctrl+Alt+KP_Right
    KH("\033O2v"), // cursor Shift+KP_Right
    KH("\033O4v"), // cursor Shift+Alt+KP_Right
    KH("\033O6v"), // cursor Shift+Ctrl+KP_Right
    KH("\033O8v"), // cursor Shift+Ctrl+Alt+KP_Right
  },
},
{
  "KP_Left",
  sizeof("KP_Left") - 1,
  {
    KH("\033[D"), // default KP_Left
    KH("\033[1;3D"), // default Alt+KP_Left
    KH("\033[1;5D"), // default Ctrl+KP_Left
    KH("\033[1;7D"), // default Ctrl+Alt+KP_Left
    KH("\033O2t"), // default Shift+KP_Left
    KH("\033O4t"), // default Shift+Alt+KP_Left
    KH("\033O6t"), // default Shift+Ctrl+KP_Left
    KH("\033O8t"), // default Shift+Ctrl+Alt+KP_Left
  },
  {
    KH("\033OD"), // cursor KP_Left
    KH("\033[1;3D"), // cursor Alt+KP_Left
    KH("\033[1;5D"), // cursor Ctrl+KP_Left
    KH("\033[1;7D"), // cursor Ctrl+Alt+KP_Left
    KH("\033O2t"), // cursor Shift+KP_Left
    KH("\033O4t"), // cursor Shift+Alt+KP_Left
    KH("\033O6t"), // cursor Shift+Ctrl+KP_Left
    KH("\033O8t"), // cursor Shift+Ctrl+Alt+KP_Left
  },
},
{
  "KP_Insert",
  sizeof("KP_Insert") - 1,
  {
    KH("\033[2~"), // default KP_Insert
    KH("\033[2;3~"), // default Alt+KP_Insert
    KH("\033[2;5~"), // default Ctrl+KP_Insert
    KH("\033[2;7~"), // default Ctrl+Alt+KP_Insert
    KH("\033[2;2~"), // default Shift+KP_Insert
    KH("\033[2;4~"), // default Shift+Alt+KP_Insert
    KH("\033[2;6~"), // default Shift+Ctrl+KP_Insert
    KH("\033[2;8~"), // default Shift+Ctrl+Alt+KP_Insert
  },
  {
    KH("\033[2~"), // cursor KP_Insert
    KH("\033[2;3~"), // cursor Alt+KP_Insert
    KH("\033[2;5~"), // cursor Ctrl+KP_Insert
    KH("\033[2;7~"), // cursor Ctrl+Alt+KP_Insert
    KH("\033[2;2~"), // cursor Shift+KP_Insert
    KH("\033[2;4~"), // cursor Shift+Alt+KP_Insert
    KH("\033[2;6~"), // cursor Shift+Ctrl+KP_Insert
    KH("\033[2;8~"), // cursor Shift+Ctrl+Alt+KP_Insert
  },
},
{
  "KP_Delete",
  sizeof("KP_Delete") - 1,
  {
    KH("\033[3~"), // default KP_Delete
    KH("\033[3;3~"), // default Alt+KP_Delete
    KH("\033[3;5~"), // default Ctrl+KP_Delete
    KH("\033[3;7~"), // default Ctrl+Alt+KP_Delete
    KH("\033O2n"), // default Shift+KP_Delete
    KH("\033O4n"), // default Shift+Alt+KP_Delete
    KH("\033O6n"), // default Shift+Ctrl+KP_Delete
    KH("\033O8n"), // default Shift+Ctrl+Alt+KP_Delete
  },
  {
    KH("\033[3~"), // cursor KP_Delete
    KH("\033[3;3~"), // cursor Alt+KP_Delete
    KH("\033[3;5~"), // cursor Ctrl+KP_Delete
    KH("\033[3;7~"), // cursor Ctrl+Alt+KP_Delete
    KH("\033O2n"), // cursor Shift+KP_Delete
    KH("\033O4n"), // cursor Shift+Alt+KP_Delete
    KH("\033O6n"), // cursor Shift+Ctrl+KP_Delete
    KH("\033O8n"), // cursor Shift+Ctrl+Alt+KP_Delete
  },
},
{
  "KP_Home",
  sizeof("KP_Home") - 1,
  {
    KH("\033[H"), // default KP_Home
    KH("\033[1;3H"), // default Alt+KP_Home
    KH("\033[1;5H"), // default Ctrl+KP_Home
    KH("\033[1;7H"), // default Ctrl+Alt+KP_Home
    KH("\033[1;2H"), // default Shift+KP_Home
    KH("\033[1;4H"), // default Shift+Alt+KP_Home
    KH("\033[1;6H"), // default Shift+Ctrl+KP_Home
    KH("\033[1;8H"), // default Shift+Ctrl+Alt+KP_Home
  },
  {
    KH("\033OH"), // cursor KP_Home
    KH("\033[1;3H"), // cursor Alt+KP_Home
    KH("\033[1;5H"), // cursor Ctrl+KP_Home
    KH("\033[1;7H"), // cursor Ctrl+Alt+KP_Home
    KH("\033[1;2H"), // cursor Shift+KP_Home
    KH("\033[1;4H"), // cursor Shift+Alt+KP_Home
    KH("\033[1;6H"), // cursor Shift+Ctrl+KP_Home
    KH("\033[1;8H"), // cursor Shift+Ctrl+Alt+KP_Home
  },
},
{
  "KP_Prior",
  sizeof("KP_Prior") - 1,
  {
    KH("\033[5~"), // default KP_Prior
    KH("\033[5;3~"), // default Alt+KP_Prior
    KH("\033[5;5~"), // default Ctrl+KP_Prior
    KH("\033[5;7~"), // default Ctrl+Alt+KP_Prior
    KH("\033[5;2~"), // default Shift+KP_Prior
    KH("\033[5;4~"), // default Shift+Alt+KP_Prior
    KH("\033[5;6~"), // default Shift+Ctrl+KP_Prior
    KH("\033[5;8~"), // default Shift+Ctrl+Alt+KP_Prior
  },
  {
    KH("\033[5~"), // cursor KP_Prior
    KH("\033[5;3~"), // cursor Alt+KP_Prior
    KH("\033[5;5~"), // cursor Ctrl+KP_Prior
    KH("\033[5;7~"), // cursor Ctrl+Alt+KP_Prior
    KH("\033[5;2~"), // cursor Shift+KP_Prior
    KH("\033[5;4~"), // cursor Shift+Alt+KP_Prior
    KH("\033[5;6~"), // cursor Shift+Ctrl+KP_Prior
    KH("\033[5;8~"), // cursor Shift+Ctrl+Alt+KP_Prior
  },
},
{
  "KP_Next",
  sizeof("KP_Next") - 1,
  {
    KH("\033[6~"), // default KP_Next
    KH("\033[6;3~"), // default Alt+KP_Next
    KH("\033[6;5~"), // default Ctrl+KP_Next
    KH("\033[6;7~"), // default Ctrl+Alt+KP_Next
    KH("\033[6;2~"), // default Shift+KP_Next
    KH("\033[6;4~"), // default Shift+Alt+KP_Next
    KH("\033[6;6~"), // default Shift+Ctrl+KP_Next
    KH("\033[6;8~"), // default Shift+Ctrl+Alt+KP_Next
  },
  {
    KH("\033[6~"), // cursor KP_Next
    KH("\033[6;3~"), // cursor Alt+KP_Next
    KH("\033[6;5~"), // cursor Ctrl+KP_Next
    KH("\033[6;7~"), // cursor Ctrl+Alt+KP_Next
    KH("\033[6;2~"), // cursor Shift+KP_Next
    KH("\033[6;4~"), // cursor Shift+Alt+KP_Next
    KH("\033[6;6~"), // cursor Shift+Ctrl+KP_Next
    KH("\033[6;8~"), // cursor Shift+Ctrl+Alt+KP_Next
  },
},
{
  "KP_Begin",
  sizeof("KP_Begin") - 1,
  {
    KH("\033[E"), // default KP_Begin
    KH("\033[1;3E"), // default Alt+KP_Begin
    KH("\033[1;5E"), // default Ctrl+KP_Begin
    KH("\033[1;7E"), // default Ctrl+Alt+KP_Begin
    KH("\033O2u"), // default Shift+KP_Begin
    KH("\033O4u"), // default Shift+Alt+KP_Begin
    KH("\033O6u"), // default Shift+Ctrl+KP_Begin
    KH("\033O8u"), // default Shift+Ctrl+Alt+KP_Begin
  },
  {
    KH("\033OE"), // cursor KP_Begin
    KH("\033[1;3E"), // cursor Alt+KP_Begin
    KH("\033[1;5E"), // cursor Ctrl+KP_Begin
    KH("\033[1;7E"), // cursor Ctrl+Alt+KP_Begin
    KH("\033O2u"), // cursor Shift+KP_Begin
    KH("\033O4u"), // cursor Shift+Alt+KP_Begin
    KH("\033O6u"), // cursor Shift+Ctrl+KP_Begin
    KH("\033O8u"), // cursor Shift+Ctrl+Alt+KP_Begin
  },
},
{
  "KP_End",
  sizeof("KP_End") - 1,
  {
    KH("\033[F"), // default KP_End
    KH("\033[1;3F"), // default Alt+KP_End
    KH("\033[1;5F"), // default Ctrl+KP_End
    KH("\033[1;7F"), // default Ctrl+Alt+KP_End
    KH("\033[1;2F"), // default Shift+KP_End
    KH("\033[1;4F"), // default Shift+Alt+KP_End
    KH("\033[1;6F"), // default Shift+Ctrl+KP_End
    KH("\033[1;8F"), // default Shift+Ctrl+Alt+KP_End
  },
  {
    KH("\033OF"), // cursor KP_End
    KH("\033[1;3F"), // cursor Alt+KP_End
    KH("\033[1;5F"), // cursor Ctrl+KP_End
    KH("\033[1;7F"), // cursor Ctrl+Alt+KP_End
    KH("\033[1;2F"), // cursor Shift+KP_End
    KH("\033[1;4F"), // cursor Shift+Alt+KP_End
    KH("\033[1;6F"), // cursor Shift+Ctrl+KP_End
    KH("\033[1;8F"), // cursor Shift+Ctrl+Alt+KP_End
  },
},
};
#undef KH
