You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #ifndef _IPXE_KEYS_H
  2. #define _IPXE_KEYS_H
  3. /** @file
  4. *
  5. * Key definitions
  6. *
  7. */
  8. FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
  9. /*
  10. * Symbolic names for some standard ASCII characters
  11. *
  12. */
  13. #define NUL 0x00
  14. #define CTRL_A 0x01
  15. #define CTRL_B 0x02
  16. #define CTRL_C 0x03
  17. #define CTRL_D 0x04
  18. #define CTRL_E 0x05
  19. #define CTRL_F 0x06
  20. #define CTRL_G 0x07
  21. #define CTRL_H 0x08
  22. #define CTRL_I 0x09
  23. #define CTRL_J 0x0a
  24. #define CTRL_K 0x0b
  25. #define CTRL_L 0x0c
  26. #define CTRL_M 0x0d
  27. #define CTRL_N 0x0e
  28. #define CTRL_O 0x0f
  29. #define CTRL_P 0x10
  30. #define CTRL_Q 0x11
  31. #define CTRL_R 0x12
  32. #define CTRL_S 0x13
  33. #define CTRL_T 0x14
  34. #define CTRL_U 0x15
  35. #define CTRL_V 0x16
  36. #define CTRL_W 0x17
  37. #define CTRL_X 0x18
  38. #define CTRL_Y 0x19
  39. #define CTRL_Z 0x1a
  40. #define BACKSPACE CTRL_H
  41. #define TAB CTRL_I
  42. #define LF CTRL_J
  43. #define CR CTRL_M
  44. #define ESC 0x1b
  45. /*
  46. * Special keys outside the normal ASCII range
  47. *
  48. *
  49. * The names are chosen to match those used by curses. The values are
  50. * chosen to facilitate easy conversion from a received ANSI escape
  51. * sequence to a KEY_XXX constant.
  52. */
  53. #define KEY_ANSI( n, terminator ) ( 0x100 * ( (n) + 1 ) + (terminator) )
  54. #define KEY_ANSI_N( key ) ( ( (key) / 0x100 ) - 1 )
  55. #define KEY_ANSI_TERMINATOR( key ) ( (key) & 0xff )
  56. #define KEY_MIN 0x101
  57. #define KEY_UP KEY_ANSI ( 0, 'A' ) /**< Up arrow */
  58. #define KEY_DOWN KEY_ANSI ( 0, 'B' ) /**< Down arrow */
  59. #define KEY_RIGHT KEY_ANSI ( 0, 'C' ) /**< Right arrow */
  60. #define KEY_LEFT KEY_ANSI ( 0, 'D' ) /**< Left arrow */
  61. #define KEY_END KEY_ANSI ( 0, 'F' ) /**< End */
  62. #define KEY_HOME KEY_ANSI ( 0, 'H' ) /**< Home */
  63. #define KEY_IC KEY_ANSI ( 2, '~' ) /**< Insert */
  64. #define KEY_DC KEY_ANSI ( 3, '~' ) /**< Delete */
  65. #define KEY_PPAGE KEY_ANSI ( 5, '~' ) /**< Page up */
  66. #define KEY_NPAGE KEY_ANSI ( 6, '~' ) /**< Page down */
  67. #define KEY_F5 KEY_ANSI ( 15, '~' ) /**< F5 */
  68. #define KEY_F6 KEY_ANSI ( 17, '~' ) /**< F6 */
  69. #define KEY_F7 KEY_ANSI ( 18, '~' ) /**< F7 */
  70. #define KEY_F8 KEY_ANSI ( 19, '~' ) /**< F8 (for PXE) */
  71. #define KEY_F9 KEY_ANSI ( 20, '~' ) /**< F9 */
  72. #define KEY_F10 KEY_ANSI ( 21, '~' ) /**< F10 */
  73. #define KEY_F11 KEY_ANSI ( 23, '~' ) /**< F11 */
  74. #define KEY_F12 KEY_ANSI ( 24, '~' ) /**< F12 */
  75. /* Not in the [KEY_MIN,KEY_MAX] range; terminals seem to send these as
  76. * normal ASCII values.
  77. */
  78. #define KEY_BACKSPACE BACKSPACE
  79. #define KEY_ENTER LF
  80. #endif /* _IPXE_KEYS_H */