--- Gnu-Mach/i386/i386at/kd.h 2020/09/02 04:36:58 1.1.1.1 +++ Gnu-Mach/i386/i386at/kd.h 2020/09/02 04:49:23 1.1.1.5 @@ -75,7 +75,11 @@ WITH THE USE OR PERFORMANCE OF THIS SOFT #include #include #include - +#include +#include +#include +#include +#include /* * Where memory for various graphics adapters starts. @@ -109,6 +113,8 @@ WITH THE USE OR PERFORMANCE OF THIS SOFT /* * Commands sent to graphics adapter. */ +#define C_START 0x0a /* return cursor line start */ +#define C_STOP 0x0b /* return cursor line stop */ #define C_LOW 0x0f /* return low byte of cursor addr */ #define C_HIGH 0x0e /* high byte */ @@ -212,6 +218,16 @@ WITH THE USE OR PERFORMANCE OF THIS SOFT #define KA_NORMAL 0x07 #define KA_REVERSE 0x70 +#define KAX_REVERSE 0x01 +#define KAX_UNDERLINE 0x02 +#define KAX_BLINK 0x04 +#define KAX_BOLD 0x08 +#define KAX_DIM 0x10 +#define KAX_INVISIBLE 0x20 + +#define KAX_COL_UNDERLINE 0x0f /* bright white */ +#define KAX_COL_DIM 0x08 /* gray */ + /* * For an EGA-like display, each character takes two bytes, one for the * actual character, followed by one for its attributes. @@ -228,7 +244,7 @@ WITH THE USE OR PERFORMANCE OF THIS SOFT #define CURRENT_COLUMN(pos) (((pos) % ONE_LINE) / ONE_SPACE) #define NUMKEYS 89 -#define NUMSTATES 5 /* NORMAL_STATE, ... */ +#define NUMSTATES 5 /* NORM_STATE, ... */ #define NUMOUTPUT 3 /* max size of byte seq from key */ #define WIDTH_KMAP (NUMSTATES * NUMOUTPUT) @@ -348,10 +364,10 @@ typedef u_char Scancode; * Other mappable non-Ascii keys (e.g., "ctrl") are represented by a * two-byte sequence: K_SCAN, followed by the key's scan code. */ -#define K_DONE 0xff /* must be same as NC */ -#define NC 0xff /* No character defined */ +#define K_DONE 0xffu /* must be same as NC */ +#define NC 0xffu /* No character defined */ -#define K_SCAN 0xfe /* followed by scan code */ +#define K_SCAN 0xfeu /* followed by scan code */ /* ascii char set */ #define K_NUL 0x00 /* Null character */ @@ -509,6 +525,21 @@ typedef u_char Scancode; #define K_F12 0x1b,0x4f,0x41 #define K_F12S 0x1b,0x4f,0x61 +/* These are the Alt-FxxA #defines. They work with the new keymap + -- Derek Upham 1997/06/25 */ +#define K_F1A 0x1b,0x4f,0x30 +#define K_F2A 0x1b,0x4f,0x31 +#define K_F3A 0x1b,0x4f,0x32 +#define K_F4A 0x1b,0x4f,0x33 +#define K_F5A 0x1b,0x4f,0x34 +#define K_F6A 0x1b,0x4f,0x35 +#define K_F7A 0x1b,0x4f,0x36 +#define K_F8A 0x1b,0x4f,0x37 +#define K_F9A 0x1b,0x4f,0x38 +#define K_F10A 0x1b,0x4f,0x39 +#define K_F11A 0x1b,0x4f,0x3a +#define K_F12A 0x1b,0x4f,0x3b + #define K_SCRL 0x1b,0x5b,0x4d #define K_HOME 0x1b,0x5b,0x48 #define K_UA 0x1b,0x5b,0x41 @@ -542,8 +573,6 @@ extern u_char key_map[NUMKEYS][WIDTH_KMA #ifdef KERNEL #include -extern void splx(); -extern spl_t spltty(); #define SPLKD spltty #endif /* KERNEL */ @@ -615,6 +644,8 @@ extern int kb_mode; #define KDGKBDTYPE _IOR('K', 2, int) /* get keyboard type */ #define KB_VANILLAKB 0 +#define KDSETLEDS _IOW('K', 5, int) /* set the keyboard ledstate */ + struct X_kdb { u_int *ptr; u_int size; @@ -660,4 +691,109 @@ typedef struct { #define MOUSE_MOTION 4 /* mouse motion */ #define KEYBD_EVENT 5 /* key up/down */ +extern boolean_t kd_isupper (u_char); +extern boolean_t kd_islower (u_char); +extern void kd_senddata (unsigned char); +extern void kd_sendcmd (unsigned char); +extern void kd_cmdreg_write (int); +extern void kd_mouse_drain (void); +extern void set_kd_state (int); +extern void kd_setleds1 (u_char); +extern void kd_setleds2 (void); +extern void cnsetleds (u_char); +extern void kdreboot (void); +extern void kd_putc (u_char); +extern void kd_parseesc (void); +extern void kd_down (void); +extern void kd_up (void); +extern void kd_cr (void); +extern void kd_tab (void); +extern void kd_left (void); +extern void kd_right (void); +extern void kd_scrollup (void); +extern void kd_scrolldn (void); +extern void kd_cls (void); +extern void kd_home (void); +extern void kd_insch (int number); +extern void kd_cltobcur (void); +extern void kd_cltopcur (void); +extern void kd_cltoecur (void); +extern void kd_clfrbcur (void); +extern void kd_eraseln (void); +extern void kd_insln (int); +extern void kd_delln (int); +extern void kd_delch (int); +extern void kd_erase (int); +extern void kd_bellon (void); +extern void kd_belloff (void *param); +extern void kdinit (void); +extern int kdsetkbent (struct kbentry *, int); +extern int kdgetkbent (struct kbentry *); +extern int kdsetbell (int, int); +extern void kd_resend (void); +extern void kd_handle_ack (void); +extern int kd_kbd_magic (int); +extern unsigned int kdstate2idx (unsigned int, boolean_t); +extern void kd_parserest (u_char *); +extern int kdcnprobe(struct consdev *cp); +extern int kdcninit(struct consdev *cp); +extern int kdcngetc(dev_t dev, int wait); +extern int kdcnmaygetc (void); +extern int kdcnputc(dev_t dev, int c); + +extern void kd_slmwd (void *start, int count, int value); +extern void kd_slmscu (void *from, void *to, int count); +extern void kd_slmscd (void *from, void *to, int count); + +extern void kdintr(int vec); + +#if MACH_KDB +extern void kdb_kintr(void); +#endif /* MACH_KDB */ + +extern int kdopen(dev_t dev, int flag, io_req_t ior); +extern void kdclose(dev_t dev, int flag); +extern int kdread(dev_t dev, io_req_t uio); +extern int kdwrite(dev_t dev, io_req_t uio); + +extern io_return_t kdgetstat( + dev_t dev, + int flavor, + int *data, + natural_t *count); + +extern io_return_t kdsetstat( + dev_t dev, + int flavor, + int * data, + natural_t count); + +extern int kdportdeath(dev_t dev, mach_port_t port); +extern int kdmmap(dev_t dev, vm_offset_t off, vm_prot_t prot); + +boolean_t kdcheckmagic(Scancode scancode); + +int do_modifier(int state, Scancode c, boolean_t up); + +/* + * Generic routines for bitmap devices (i.e., assume no hardware + * assist). Assumes a simple byte ordering (i.e., a byte at a lower + * address is to the left of the byte at the next higher address). + * For the 82786, this works anyway if the characters are 2 bytes + * wide. (more bubble gum and paper clips.) + * + * See the comments above (in i386at/kd.c) about SLAMBPW. + */ +void bmpch2bit(csrpos_t pos, short *xb, short *yb); +void bmppaintcsr(csrpos_t pos, u_char val); +u_char *bit2fbptr(short xb, short yb); + +unsigned char kd_getdata(void); +unsigned char state2leds(int state); + +void kdstart(struct tty *tp); +void kdstop(struct tty *tp, int flags); + +void kd_xga_init(void); + #endif /* _KD_H_ */