#sccs "@(#)uts/kern/sys:kbd.h 1.2" #include "sys/param.h" /* Miscellaneous Parameters */ #define REPTDLAY (HZ/2) /* initial repeat delay */ #define REPTRATE (HZ/15) /* repeat rate */ /* Special Keyboard Scan Codes */ #define KALLUP 0x40 /* all keys up */ #define KLAST 0x80 /* last entry in list */ #define KBOGUS 0x3F /* invalid code */ #define KSHIFT1 0x48 /* left-hand shift */ #define KSHIFT2 0x49 /* right-hand shift */ #define KCTRL1 0x4C /* left-hand control */ #define KCTRL2 0x4D /* right-hand control */ #define KCAPLCK 0x45 /* caps lock */ #define KNUMLCK 0x7E /* num lock */ #define KPRINT 0x43 /* num 7, print */ #define KRFRSH 0x44 /* num 8, refresh */ #define KPAGE 0x46 /* num 9, page */ #define KBEG 0x47 /* num 4, beg */ #define KHOME 0x4A /* num 5, home */ #define KEND 0x4B /* num 6, end */ #define KPREV 0x05 /* num 1, prev */ #define KUP 0x01 /* num 2, up */ #define KNEXT 0x0C /* num 3, next */ #define KLEFT 0x0E /* num -, left */ #define KDOWN 0x0B /* num 0, down */ #define KRIGHT 0x0F /* num ., right */ /* Keyboard Output Codes */ #define KBDRST 0x92 /* reset */ #define CAPLED 0xB0 /* caplck (b0=0 b1=1) */ #define NUMLED 0xA0 /* numlck (a0=0 a1=1) */ /* Keyboard Table Defs */ #define REPT 0x1 /* key repeats */ #define CAPLCK 0x2 /* caps lock'able */ #define NUMLCK 0x4 /* num lock'able */ #define ILLK -1 /* illegal key */ struct keydef { short kt_codes[3]; /* norm,shift,ctrl */ char kt_flags; /* flags */ }; #ifdef GEN_KT struct keydef keymap[] = { 0xffff,0xffff,0xffff, 0, /* 0x00 (key= 0, att= 0) `unused' */ 0x0241,0x0254,0x0254, 5, /* 0x01 (key=93, att=98) `ROLL/UP' */ 0x0361,0x0341,0x0341, 0, /* 0x02 (key= 1, att= 1) `ClearLine' */ 0x0362,0x0342,0x0342, 0, /* 0x03 (key= 2, att= 2) `Rstrt/Ref' */ 0x036b,0x034b,0x034b, 0, /* 0x04 (key=11, att=15) `Exit' */ 0x0467,0x0447,0x0447, 5, /* 0x05 (key=92, att=97) `PREV' */ 0xfd08,0xfd08,0xfd08, 0, /* 0x06 (key=12, att=16) `Msg' */ 0x0377,0x0357,0x0357, 0, /* 0x07 (key=38, att=42) `CANCL' */ 0x0008,0x0008,0x0008, 1, /* 0x08 (key=34, att=38) `BACKSPACE' */ 0x0009,0x025a,0x025a, 1, /* 0x09 (key=41, att=45) `TAB' */ 0x000a,0x000a,0x000a, 0, /* 0x0a (key=91, att=96) `ENTER' */ 0x0242,0x0253,0x0253, 5, /* 0x0b (key=102, att=109) `ROLL/DN' */ 0x0468,0x0448,0x0448, 5, /* 0x0c (key=94, att=99) `NEXT' */ 0x000d,0x000d,0x000d, 1, /* 0x0d (key=73, att=77) `RETURN' */ 0x0244,0x044b,0x044b, 5, /* 0x0e (key=101, att=108) `<-' */ 0x0243,0x044c,0x044c, 5, /* 0x0f (key=103, att=110) `->' */ 0x036e,0x034e,0x034e, 0, /* 0x10 (key=14, att=18) `Creat' */ 0x036f,0x034f,0x034f, 0, /* 0x11 (key=15, att=19) `Save' */ 0x0463,0x0443,0x0443, 0, /* 0x12 (key=59, att=63) `MOVE' */ 0x0372,0x0352,0x0352, 0, /* 0x13 (key=18, att=22) `Ops' */ 0x0464,0x0444,0x0444, 0, /* 0x14 (key=60, att=64) `COPY' */ 0x0363,0xfe00,0xffff, 0, /* 0x15 (key= 3, att= 3) `F1' */ 0x0364,0xfe01,0xffff, 0, /* 0x16 (key= 4, att= 4) `F2' */ 0x0365,0xfe02,0xffff, 0, /* 0x17 (key= 5, att= 5) `F3' */ 0x0366,0xfe03,0xffff, 0, /* 0x18 (key= 6, att= 8) `F4' */ 0x0367,0xfe04,0xffff, 0, /* 0x19 (key= 7, att= 9) `F5' */ 0x0368,0xfe05,0xffff, 0, /* 0x1a (key= 8, att=12) `F6' */ 0x001b,0x007f,0xffff, 1, /* 0x1b (key=21, att=25) `Esc/DEL' */ 0x0369,0xfe06,0xffff, 0, /* 0x1c (key= 9, att=13) `F7' */ 0x036a,0xfe07,0xffff, 0, /* 0x1d (key=10, att=14) `F8' */ 0xff0a,0xff09,0xff09, 0, /* 0x1e (key=16, att=20) `Suspd' */ 0xff0c,0xff0b,0xff0b, 0, /* 0x1f (key=17, att=21) `Rsume' */ 0x0020,0x0020,0x0020, 1, /* 0x20 (key=98, att=104) `SPACE' */ 0x0373,0x0353,0x0353, 0, /* 0x21 (key=19, att=23) `Undo' */ 0x0374,0x0354,0x0354, 0, /* 0x22 (key=20, att=24) `Redo' */ 0x0378,0x0358,0x0358, 0, /* 0x23 (key=39, att=43) `FIND' */ 0x0379,0x0359,0x0359, 0, /* 0x24 (key=40, att=44) `RPLAC' */ 0x00ff,0x00ff,0x00ff, 0, /* 0x25 (key=35, att=39) `RESET/BREAK' */ 0x0466,0x0446,0x0446, 1, /* 0x26 (key=78, att=83) `DLETECHAR' */ 0x0027,0x0022,0xffff, 1, /* 0x27 (key=72, att=76) `'' */ 0x0469,0x0449,0x0449, 0, /* 0x28 (key=95, att=100) `SLECT/MARK' */ 0x046a,0x044a,0x044a, 0, /* 0x29 (key=96, att=101) `INPUT/MODE' */ 0x036d,0x034d,0x034d, 0, /* 0x2a (key=13, att=17) `Help' */ 0xffff,0xffff,0xffff, 0, /* 0x2b (key= 0, att= 0) `unused' */ 0x002c,0x003c,0xffff, 1, /* 0x2c (key=87, att=92) `,' */ 0x002d,0x005f,0x056b, 1, /* 0x2d (key=32, att=36) `-' */ 0x002e,0x003e,0xffff, 1, /* 0x2e (key=88, att=93) `.' */ 0x002f,0x003f,0xffff, 1, /* 0x2f (key=89, att=94) `/' */ 0x0030,0x0029,0x056a, 1, /* 0x30 (key=31, att=35) `0' */ 0x0031,0x0021,0x0561, 1, /* 0x31 (key=22, att=26) `1' */ 0x0032,0x0040,0x0562, 1, /* 0x32 (key=23, att=27) `2' */ 0x0033,0x0023,0x0563, 1, /* 0x33 (key=24, att=28) `3' */ 0x0034,0x0024,0x0564, 1, /* 0x34 (key=25, att=29) `4' */ 0x0035,0x0025,0x0565, 1, /* 0x35 (key=26, att=30) `5' */ 0x0036,0x005e,0x0566, 1, /* 0x36 (key=27, att=31) `6' */ 0x0037,0x0026,0x0567, 1, /* 0x37 (key=28, att=32) `7' */ 0x0038,0x002a,0x0568, 1, /* 0x38 (key=29, att=33) `8' */ 0x0039,0x0028,0x0569, 1, /* 0x39 (key=30, att=34) `9' */ 0xffff,0xffff,0xffff, 0, /* 0x3a (key= 0, att= 0) `unused' */ 0x003b,0x003a,0xffff, 1, /* 0x3b (key=71, att=75) `;' */ 0xffff,0xffff,0xffff, 0, /* 0x3c (key= 0, att= 0) `unused' */ 0x003d,0x002b,0x056c, 1, /* 0x3d (key=33, att=37) `=' */ 0xffff,0xffff,0xffff, 0, /* 0x3e (key= 0, att= 0) `unused' */ 0xffff,0xffff,0xffff, 0, /* 0x3f (key= 0, att= 0) `unused' */ 0xffff,0xffff,0xffff, 0, /* 0x40 (key= 0, att= 0) `unused' */ 0x0375,0x0355,0x0355, 0, /* 0x41 (key=36, att=40) `CMD' */ 0x0376,0x0356,0x0356, 0, /* 0x42 (key=37, att=41) `CLOSE/OPEN' */ 0x037a,0xff0d,0xff0d, 4, /* 0x43 (key=56, att=60) `PRINT' */ 0x0461,0x024a,0x024a, 4, /* 0x44 (key=57, att=61) `CLEAR/RFHSH' */ 0xffff,0xffff,0xffff, 0, /* 0x45 (key=61, att=65) `CAPLOCK' */ 0x0255,0x0256,0x0256, 4, /* 0x46 (key=58, att=62) `PAGE' */ 0x0139,0x0442,0x0442, 4, /* 0x47 (key=74, att=79) `BEG' */ 0xffff,0xffff,0xffff, 0, /* 0x48 (key=79, att=84) `L-SHIFT' */ 0xffff,0xffff,0xffff, 0, /* 0x49 (key=90, att=95) `R-SHIFT' */ 0x0248,0x044d,0x044d, 4, /* 0x4a (key=75, att=80) `HOME' */ 0x0130,0x044e,0x044e, 4, /* 0x4b (key=76, att=81) `END' */ 0xffff,0xffff,0xffff, 0, /* 0x4c (key=97, att=103) `CTRL' */ 0xffff,0xffff,0xffff, 0, /* 0x4d (key=99, att=105) `CTRL' */ 0xffff,0xffff,0xffff, 0, /* 0x4e (key= 0, att= 0) `unused' */ 0xffff,0xffff,0xffff, 0, /* 0x4f (key= 0, att= 0) `unused' */ 0xffff,0xffff,0xffff, 0, /* 0x50 (key= 0, att= 0) `unused' */ 0xffff,0xffff,0xffff, 0, /* 0x51 (key= 0, att= 0) `unused' */ 0xffff,0xffff,0xffff, 0, /* 0x52 (key= 0, att= 0) `unused' */ 0xffff,0xffff,0xffff, 0, /* 0x53 (key= 0, att= 0) `unused' */ 0xffff,0xffff,0xffff, 0, /* 0x54 (key= 0, att= 0) `unused' */ 0xffff,0xffff,0xffff, 0, /* 0x55 (key= 0, att= 0) `unused' */ 0xffff,0xffff,0xffff, 0, /* 0x56 (key= 0, att= 0) `unused' */ 0xffff,0xffff,0xffff, 0, /* 0x57 (key= 0, att= 0) `unused' */ 0xffff,0xffff,0xffff, 0, /* 0x58 (key= 0, att= 0) `unused' */ 0xffff,0xffff,0xffff, 0, /* 0x59 (key= 0, att= 0) `unused' */ 0xffff,0xffff,0xffff, 0, /* 0x5a (key= 0, att= 0) `unused' */ 0x005b,0x007b,0x001b, 1, /* 0x5b (key=52, att=56) `[' */ 0x005c,0x007c,0x001c, 1, /* 0x5c (key=54, att=58) `\\' */ 0x005d,0x007d,0x001d, 1, /* 0x5d (key=53, att=57) `]' */ 0xffff,0xffff,0xffff, 0, /* 0x5e (key= 0, att= 0) `unused' */ 0xffff,0xffff,0xffff, 0, /* 0x5f (key= 0, att= 0) `unused' */ 0x0060,0x007e,0x0000, 1, /* 0x60 (key=55, att=59) ``' */ 0x0061,0x0041,0x0001, 3, /* 0x61 (key=62, att=66) `A' */ 0x0062,0x0042,0x0002, 3, /* 0x62 (key=84, att=89) `B' */ 0x0063,0x0043,0x0003, 3, /* 0x63 (key=82, att=87) `C' */ 0x0064,0x0044,0x0004, 3, /* 0x64 (key=64, att=68) `D' */ 0x0065,0x0045,0x0005, 3, /* 0x65 (key=44, att=48) `E' */ 0x0066,0x0046,0x0006, 3, /* 0x66 (key=65, att=69) `F' */ 0x0067,0x0047,0x0007, 3, /* 0x67 (key=66, att=70) `G' */ 0x0068,0x0048,0x0008, 3, /* 0x68 (key=67, att=71) `H' */ 0x0069,0x0049,0x0009, 3, /* 0x69 (key=49, att=53) `I' */ 0x006a,0x004a,0x000a, 3, /* 0x6a (key=68, att=72) `J' */ 0x006b,0x004b,0x000b, 3, /* 0x6b (key=69, att=73) `K' */ 0x006c,0x004c,0x000c, 3, /* 0x6c (key=70, att=74) `L' */ 0x006d,0x004d,0x000d, 3, /* 0x6d (key=86, att=91) `M' */ 0x006e,0x004e,0x000e, 3, /* 0x6e (key=85, att=90) `N' */ 0x006f,0x004f,0x000f, 3, /* 0x6f (key=50, att=54) `O' */ 0x0070,0x0050,0x0010, 3, /* 0x70 (key=51, att=55) `P' */ 0x0071,0x0051,0x0011, 3, /* 0x71 (key=42, att=46) `Q' */ 0x0072,0x0052,0x0012, 3, /* 0x72 (key=45, att=49) `R' */ 0x0073,0x0053,0x0013, 3, /* 0x73 (key=63, att=67) `S' */ 0x0074,0x0054,0x0014, 3, /* 0x74 (key=46, att=50) `T' */ 0x0075,0x0055,0x0015, 3, /* 0x75 (key=48, att=52) `U' */ 0x0076,0x0056,0x0016, 3, /* 0x76 (key=83, att=88) `V' */ 0x0077,0x0057,0x0017, 3, /* 0x77 (key=43, att=47) `W' */ 0x0078,0x0058,0x0018, 3, /* 0x78 (key=81, att=86) `X' */ 0x0079,0x0059,0x0019, 3, /* 0x79 (key=47, att=51) `Y' */ 0x007a,0x005a,0x001a, 3, /* 0x7a (key=80, att=85) `Z' */ 0xffff,0xffff,0xffff, 0, /* 0x7b (key= 0, att= 0) `unused' */ 0xffff,0xffff,0xffff, 0, /* 0x7c (key= 0, att= 0) `unused' */ 0xffff,0xffff,0xffff, 0, /* 0x7d (key= 0, att= 0) `unused' */ 0xffff,0xffff,0xffff, 0, /* 0x7e (key=100, att=107) `NUMLOCK' */ 0x0465,0x0445,0x0445, 0, /* 0x7f (key=77, att=82) `DLETE' */ }; char *kprefix[] = { "\033", "\033[", "\033O", "\033N", "\033P" }; #endif GEN_KT /* These are special key code values needed by mouse border handling. */ #define KCSUP 0x254 #define KCSDOWN 0x253 #define KCPAGEDN 0x255 #define KCPAGEUP 0x256 #define KCBEG 0x139 #define KCEND 0x130 #define KCCANCEL 0x357 #define KCSSUSPD 0xff09 #define KCSRSUME 0xff0b #define KCSLEFT 0x44b #define KCHELP 0x36d #define KCSRIGHT 0x44c /* These are special key code values needed by mouse activated SLKs */ #define KCF1 0x363 #define KCF2 0x364 #define KCF3 0x365 #define KCF4 0x366 #define KCF5 0x367 #define KCF6 0x368 #define KCF7 0x369 #define KCF8 0x36a /* icon numbers - returned by WBFIND(), used in mouse.c */ #define IC_MOVE 1 #define IC_HELP 2 #define IC_RESIZE 3 #define IC_CANCEL 4 #define IC_UPSCROLL 5 #define IC_DNSCROLL 6 #define IC_LSCROLL 7 #define IC_RSCROLL 8