Key definitions
authorMichael Brown <mcb30@etherboot.org>
Wed, 20 Dec 2006 21:53:07 +0000 (21:53 +0000)
committerMichael Brown <mcb30@etherboot.org>
Wed, 20 Dec 2006 21:53:07 +0000 (21:53 +0000)
src/include/gpxe/keys.h [new file with mode: 0644]

diff --git a/src/include/gpxe/keys.h b/src/include/gpxe/keys.h
new file mode 100644 (file)
index 0000000..601aeaa
--- /dev/null
@@ -0,0 +1,78 @@
+#ifndef _GPXE_KEYS_H
+#define _GPXE_KEYS_H
+
+/** @file
+ *
+ * Key definitions
+ *
+ */
+
+/*
+ * Symbolic names for some standard ASCII characters
+ *
+ */
+
+#define NUL            0x00
+#define CTRL_A         0x01
+#define CTRL_B         0x02
+#define CTRL_C         0x03
+#define CTRL_D         0x04
+#define CTRL_E         0x05
+#define CTRL_F         0x06
+#define CTRL_G         0x07
+#define CTRL_H         0x08
+#define CTRL_I         0x09
+#define CTRL_J         0x0a
+#define CTRL_K         0x0b
+#define CTRL_L         0x0c
+#define CTRL_M         0x0d
+#define CTRL_N         0x0e
+#define CTRL_O         0x0f
+#define CTRL_P         0x10
+#define CTRL_Q         0x11
+#define CTRL_R         0x12
+#define CTRL_S         0x13
+#define CTRL_T         0x14
+#define CTRL_U         0x15
+#define CTRL_V         0x16
+#define CTRL_W         0x17
+#define CTRL_X         0x18
+#define CTRL_Y         0x19
+#define CTRL_Z         0x1a
+
+#define BACKSPACE      CTRL_H
+#define TAB            CTRL_I
+#define ENTER          CTRL_M
+#define ESC            0x1b
+
+/*
+ * Special keys outside the normal ASCII range 
+ *
+ *
+ * These values are chosen to facilitate easy conversion from a
+ * received ANSI escape sequence to a KEY_XXX constant.  The KEY_XXX
+ * constant is simply 0x100 plus the first byte following CSI in the
+ * ANSI escape sequence.  For example, KEY_LEFT is 0x144, since a left
+ * cursor key is transmitted as the ANSI sequence "^[[D".
+ */
+
+#define KEY_ANSI( character ) ( 0x100 + (character) )
+
+#define KEY_MIN                0x101
+#define KEY_UP         KEY_ANSI ( 'A' )
+#define KEY_DOWN       KEY_ANSI ( 'B' )
+#define KEY_RIGHT      KEY_ANSI ( 'C' )
+#define KEY_LEFT       KEY_ANSI ( 'D' )
+#define KEY_END                KEY_ANSI ( 'E' )
+#define KEY_HOME       KEY_ANSI ( 'H' )
+#define KEY_PPAGE      KEY_ANSI ( '5' )
+#define KEY_NPAGE      KEY_ANSI ( '6' )
+#define KEY_MAX                0x1ff
+
+/* Not in the [KEY_MIN,KEY_MAX] range; terminals seem to send these as
+ * normal ASCII values.
+ */
+#define KEY_BACKSPACE  BACKSPACE
+#define KEY_ENTER      ENTER
+
+#endif /* _GPXE_KEYS_H */