Coherent4.2.10/include/sys/kb.h
/* (-lgl
* Coherent 386 release 4.2
* Copyright (c) 1982, 1993 by Mark Williams Company.
* All rights reserved. May not be copied without permission.
* For copying permission and licensing info, write licensing@mwc.com
-lgl) */
#ifndef __SYS_KB_H__
#define __SYS_KB_H__
/*
* Keyboard definitions and constants for user configurable AT keyboard driver.
*/
#include <common/feature.h>
/*
* Language spec for non-loadable keyboard drivers.
*/
enum {
kb_lang_us = 0,
kb_lang_de = 1,
kb_lang_fr = 2
};
/*
* ASCII Macro Definitions.
*/
#define nul 0x00 /* Null */
#define soh 0x01 /* Start Of Header */
#define stx 0x02 /* Start Of Text */
#define etx 0x03 /* End Of Text */
#define eot 0x04 /* End Of Transmission */
#define enq 0x05 /* Enquiry */
#define ack 0x06 /* Acknowledge */
#define bel 0x07 /* Bell */
#define bs 0x08 /* Backspace */
#define ht 0x09 /* Horizontal Tab */
#define nl 0x0A /* New Line (line feed) */
#define lf 0x0A /* Line Feed (newline) */
#define vt 0x0B /* Vertical Tabulation */
#define ff 0x0C /* Form Feed */
#define cr 0x0D /* Carriage Return */
#define so 0x0E /* Stand Out */
#define si 0x0F /* Stand In */
#define dle 0x10 /* Data Link Escape */
#define dc1 0x11 /* Data Ctrl 1 - XON */
#define dc2 0x12 /* Data Ctrl 2 */
#define dc3 0x13 /* Data Ctrl 3 - XOFF */
#define dc4 0x14 /* Data Ctrl 4 */
#define nak 0x15 /* Negative Acknowledge */
#define syn 0x16 /* Synchronization */
#define etb 0x17 /* End of Trans. Block */
#define can 0x18 /* Cancel */
#define em 0x19 /* End of Medium */
#define sub 0x1A /* Substitute */
#define esc 0x1B /* Escape */
#define fs 0x1C /* Form Sep. */
#define gs 0x1D /* Group Sep. */
#define rs 0x1E /* Record Sep. */
#define us 0x1F /* Unit Sep. */
#define del 0x7F /* Delete */
#define rub 0x7F /* Rubout (Delete) */
/*
* special and shift keys
*/
#define none 0xFF /* no key value */
#define scroll 1 /* SCROLL lock key */
#define num 2 /* NUM lock key */
#define caps 3 /* CAPS lock key */
#define lalt 4 /* left ALT key */
#define ralt 5 /* right ALT key */
#define lshift 6 /* left SHIFT key */
#define rshift 7 /* right SHIFT key */
#define lctrl 8 /* left CTRL key */
#define rctrl 9 /* right CTRL key */
#define altgr 10 /* ALT GR. key */
/*
* flag/mode field definitions
*/
#define O 0 /* OFF: no special processing */
#define N 0x01 /* NUM lock applies */
#define C 0x02 /* CAP lock applies */
#define F 0x04 /* programmable function key */
#define S 0x08 /* shift key (from above list) */
/* 0x10 available */
/* 0x20 available */
#define TMODE 0xC0 /* key mode mask (T, M, MB, TMB) */
#define M 0x00 /* "Make" only */
#define T 0x40 /* "Typematic" mode */
#define MB 0x80 /* "Make/Break" mode */
#define TMB 0xC0 /* "Typematic/Make/Break" mode */
/*
* function key definitions
*/
#define reboot f0 /* reboot system */
#define f0 0 /* function key 0 */
#define f1 1 /* function key 1 */
#define f2 2 /* function key 2 */
#define f3 3 /* function key 3 */
#define f4 4 /* function key 4 */
#define f5 5 /* function key 5 */
#define f6 6 /* function key 6 */
#define f7 7 /* function key 7 */
#define f8 8 /* function key 8 */
#define f9 9 /* function key 9 */
#define f10 10 /* function key 10 */
#define f11 11 /* function key 11 */
#define f12 12 /* function key 12 */
#define f13 13 /* function key 13 */
#define f14 14 /* function key 14 */
#define f15 15 /* function key 15 */
#define f16 16 /* function key 16 */
#define f17 17 /* function key 17 */
#define f18 18 /* function key 18 */
#define f19 19 /* function key 19 */
#define f20 20 /* function key 20 */
#define f21 21 /* function key 21 */
#define f22 22 /* function key 22 */
#define f23 23 /* function key 23 */
#define f24 24 /* function key 24 */
#define f25 25 /* function key 25 */
#define f26 26 /* function key 26 */
#define f27 27 /* function key 27 */
#define f28 28 /* function key 28 */
#define f29 29 /* function key 29 */
#define f30 30 /* function key 30 */
#define f31 31 /* function key 31 */
#define f32 32 /* function key 32 */
#define f33 33 /* function key 33 */
#define f34 34 /* function key 34 */
#define f35 35 /* function key 35 */
#define f36 36 /* function key 36 */
#define f37 37 /* function key 37 */
#define f38 38 /* function key 38 */
#define f39 39 /* function key 39 */
#define f40 40 /* function key 40 */
#define f41 41 /* function key 41 */
#define f42 42 /* function key 42 */
#define f43 43 /* function key 43 */
#define f44 44 /* function key 44 */
#define f45 45 /* function key 45 */
#define f46 46 /* function key 46 */
#define f47 47 /* function key 47 */
#define f48 48 /* function key 48 */
#define f49 49 /* function key 49 */
#define f50 50 /* function key 50 */
#define f51 51 /* function key 51 */
#define f52 52 /* function key 52 */
#define f53 53 /* function key 53 */
#define f54 54 /* function key 54 */
#define f55 55 /* function key 55 */
#define f56 56 /* function key 56 */
#define f57 57 /* function key 57 */
#define f58 58 /* function key 58 */
#define f59 59 /* function key 59 */
#define f60 60 /* function key 60 */
#define f61 61 /* function key 61 */
#define f62 62 /* function key 62 */
#define f63 63 /* function key 63 */
#define f64 64 /* function key 64 */
#define f65 65 /* function key 65 */
#define f66 66 /* function key 66 */
#define f67 67 /* function key 67 */
#define f68 68 /* function key 68 */
#define f69 69 /* function key 69 */
#define f70 70 /* function key 70 */
#define f71 71 /* function key 71 */
#define f72 72 /* function key 72 */
#define f73 73 /* function key 73 */
#define f74 74 /* function key 74 */
#define f75 75 /* function key 75 */
#define f76 76 /* function key 76 */
#define f77 77 /* function key 77 */
#define f78 78 /* function key 78 */
#define f79 79 /* function key 79 */
#define f80 80 /* function key 80 */
#define f81 81 /* function key 81 */
#define f82 82 /* function key 82 */
#define f83 83 /* function key 83 */
#define f84 84 /* function key 84 */
#define f85 85 /* function key 85 */
#define f86 86 /* function key 86 */
#define f87 87 /* function key 87 */
#define f88 88 /* function key 88 */
#define f89 89 /* function key 89 */
#define f90 90 /* function key 90 */
#define f91 91 /* function key 91 */
#define f92 92 /* function key 92 */
#define f93 93 /* function key 93 */
#define f94 94 /* function key 94 */
#define f95 95 /* function key 95 */
#define f96 96 /* function key 96 */
#define f97 97 /* function key 97 */
#define f98 98 /* function key 98 */
#define f99 99 /* function key 99 */
/*
* table entry definition
*/
typedef struct {
unsigned char k_key; /* Scan code set 3 key value */
unsigned char k_val[9]; /* key value for each mode */
unsigned char k_flags; /* flags and mode bits */
} KBTBL;
/*
* Index values for k_val[] array.
* These are computed in the driver based upon the following weighting:
*
* Shift Keys bit 0
* Control Keys bit 1
* Alt Keys bit 2
* Alt Graphic Key bit 3
*
* Use of the Alt Graphic key ignores other shift modes.
*/
#define BASE 0
#define SHIFT 1
#define CTRL 2
#define CTRL_SHIFT 3
#define ALT 4
#define ALT_SHIFT 5
#define ALT_CTRL 6
#define ALT_CTRL_SHIFT 7
#define ALT_GR 8
/*
* Keyboard responses to system
*/
#define K_BREAK 0xF0 /* break code prefix byte */
#define K_ACK 0xFA /* Acknowledgement */
#define K_BAT_OK 0xAA /* BAT Completion code */
#define K_BAT_BAD 0xFC /* BAT Failure code */
#define K_ECHO_R 0xEE /* Echo response */
#define K_DETECT_1 0xFF /* Key detect error, code set 1 */
#define K_DETECT_23 0x00 /* Key detect error, code sets 2 & 3 */
#define K_OVERRUN_1 0xFF /* Buffer overrun, code set 1 */
#define K_OVERRUN_23 0x00 /* Buffer overrun, code sets 2 & 3 */
#define K_RESEND 0xFE /* Resend prior command */
/*
* Keyboard commands
*/
#define K_LED_CMD 0xED /* Set/reset LEDs */
#define K_ECHO_CMD 0xEE /* Echo */
#define K_SCANCODE_CMD 0xF0 /* Select scan code set */
#define K_RATE_CMD 0xF3 /* Set typematic rate/delay */
#define K_ENABLE_CMD 0xF4 /* Enable keyboard */
#define K_DEFAULT_CMD 0xF6 /* Set defaults */
#define K_ALL_T_CMD 0xF7 /* Set all keys typematic */
#define K_ALL_MB_CMD 0xF8 /* Set all keys make/break */
#define K_ALL_M_CMD 0xF9 /* Set all keys make */
#define K_ALL_TMB_CMD 0xFA /* Set all keys typematic/make/break */
#define K_KEY_T_CMD 0xFB /* Set key as typematic */
#define K_KEY_MB_CMD 0xFC /* Set key as make/break */
#define K_KEY_M_CMD 0xFD /* Set key as make */
#define K_RESEND_CMD 0xFE /* Resend */
#define K_RESET_CMD 0xFF /* Reset keyboard */
/*
* function key definitions
*
* After this structure are the actual function key text strings.
* Entries are delimited by DELIM (0xFF or '\377') to allow NUL characters to
* be embedded in function strings.
*/
typedef struct {
unsigned char k_nfkeys; /* number of function keys */
} FNKEY;
#define MAX_KEYS 256 /* all that can fit in a char */
#define MAX_TABLE_SIZE (MAX_KEYS * sizeof(KBTBL)) /* worst case table size */
#define MAX_FKEYS 75
#define MAX_FCHAR 2048 /* default Fn key arena size */
#define DELIM 0xFF /* function key delimiter */
/*
* Virtual terminal key definitions.
* These are byte values, and MUST NOT overlap with f0..fn values above.
*
* For VTKEY test to work, virtual terminal selector values must be
* in a contiguous range from VTKEY_HOME to VTKEY_MAX.
*/
#define vt0 130
#define vt1 vt0+1
#define vt2 vt0+2
#define vt3 vt0+3
#define vt4 vt0+4
#define vt5 vt0+5
#define vt6 vt0+6
#define vt7 vt0+7
#define vt8 vt0+8
#define vt9 vt0+9
#define vt10 vt0+10
#define vt11 vt0+11
#define vt12 vt0+12
#define vt13 vt0+13
#define vt14 vt0+14
#define vt15 vt0+15
#define color0 vt0+16
#define color1 color0+1
#define color2 color0+2
#define color3 color0+3
#define color4 color0+4
#define color5 color0+5
#define color6 color0+6
#define color7 color0+7
#define color8 color0+8
#define color9 color0+9
#define color10 color0+10
#define color11 color0+11
#define color12 color0+12
#define color13 color0+13
#define color14 color0+14
#define color15 color0+15
#define mono0 vt0+32
#define mono1 mono0+1
#define mono2 mono0+2
#define mono3 mono0+3
#define mono4 mono0+4
#define mono5 mono0+5
#define mono6 mono0+6
#define mono7 mono0+7
#define mono8 mono0+8
#define mono9 mono0+9
#define mono10 mono0+10
#define mono11 mono0+11
#define mono12 mono0+12
#define mono13 mono0+13
#define mono14 mono0+14
#define mono15 mono0+15
/*
* vtn - next logical session (increasing minor numbers)
* vtp - previous logical session (decreasing minor numbers)
* vtt - toggle current with latest session
*/
#define vtn vt0+48
#define vtp vt0+49
#define vtt vt0+50
#define VTKEY_HOME vt0
#define VTKEY_NEXT vtn
#define VTKEY_PREV vtp
#define VTKEY_TOGL vtt
#define VTKEY_MAX vtt
#define VTKEY(x) ((x)>=VTKEY_HOME && (x)<=VTKEY_MAX)
/*
* "fgk" is normally bound to <alt>+<enter>.
*/
#define fgk (VTKEY_MAX+1)
/*
* function key definitions
*
* Struct member k_fnval contains the actual function key values.
* Entries are delimited by DELIM (0xFF or '\377') to allow NUL characters to
* be embedded in function strings.
*/
#define VNKB_FALSE 0
#define VNKB_TRUE 1
#if _KERNEL
/*
* patchable params for non-standard keyboards
*/
extern int KBDATA; /* Keyboard data */
extern int KBCTRL; /* Keyboard control */
extern int KBSTS_CMD; /* Keyboard status/command */
extern int KBFLAG; /* Keyboard reset flag */
extern int KBBOOT; /* 0: disallow reboot from keyboard */
extern int KBTIMEOUT; /* shouldn't need this much */
extern int KBCMDBYTE; /* no translation */
extern int isbusy; /* Raw input conversion busy */
extern int vt_kb_state, vt_kb_cmd2, vt_kb_prev_cmd;
#endif /* _KERNEL */
#endif /* ! defined (__SYS_KB_H__) */