Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:23:41

0001 /**
0002  * @file
0003  *
0004  * @ingroup RTEMSBSPsI386
0005  *
0006  * @brief Keyboard definitions.
0007  */
0008 
0009 /*
0010  *  Submitted by: Rosimildo da Silva:  rdasilva@connecttel.com
0011  */
0012 
0013 #ifndef __RTEMS_KEYBOARD_H
0014 #define __RTEMS_KEYBOARD_H
0015 
0016 #include <rtems/kd.h>
0017 
0018 #define KG_SHIFT    0
0019 #define KG_CTRL     2
0020 #define KG_ALT      3
0021 #define KG_ALTGR    1
0022 #define KG_SHIFTL   4
0023 #define KG_SHIFTR   5
0024 #define KG_CTRLL    6
0025 #define KG_CTRLR    7
0026 #define KG_CAPSSHIFT    8
0027 
0028 #define NR_SHIFT    9
0029 
0030 #define NR_KEYS        128
0031 #define MAX_NR_KEYMAPS  256
0032 /* This means 64Kb if all keymaps are allocated. Only the superuser
0033     may increase the number of keymaps beyond MAX_NR_OF_USER_KEYMAPS. */
0034 #define MAX_NR_OF_USER_KEYMAPS 256  /* should be at least 7 */
0035 
0036 extern const int NR_TYPES;
0037 extern unsigned short *key_maps[MAX_NR_KEYMAPS];
0038 extern unsigned short plain_map[NR_KEYS];
0039 extern unsigned char keyboard_type;
0040 
0041 #define MAX_NR_FUNC 256 /* max nr of strings assigned to keys */
0042 #define MAX_NR_CONSOLES 1
0043 
0044 extern char *func_table[MAX_NR_FUNC];
0045 
0046 #define KT_LATIN    0   /* we depend on this being zero */
0047 #define KT_LETTER   11  /* symbol that can be acted upon by CapsLock */
0048 #define KT_FN       1
0049 #define KT_SPEC     2
0050 #define KT_PAD      3
0051 #define KT_DEAD     4
0052 #define KT_CONS     5
0053 #define KT_CUR      6
0054 #define KT_SHIFT    7
0055 #define KT_META     8
0056 #define KT_ASCII    9
0057 #define KT_LOCK     10
0058 #define KT_SLOCK    12
0059 
0060 #define K(t,v)      (((t)<<8)|(v))
0061 #define KTYP(x)     ((x) >> 8)
0062 #define KVAL(x)     ((x) & 0xff)
0063 
0064 #define K_F1        K(KT_FN,0)
0065 #define K_F2        K(KT_FN,1)
0066 #define K_F3        K(KT_FN,2)
0067 #define K_F4        K(KT_FN,3)
0068 #define K_F5        K(KT_FN,4)
0069 #define K_F6        K(KT_FN,5)
0070 #define K_F7        K(KT_FN,6)
0071 #define K_F8        K(KT_FN,7)
0072 #define K_F9        K(KT_FN,8)
0073 #define K_F10       K(KT_FN,9)
0074 #define K_F11       K(KT_FN,10)
0075 #define K_F12       K(KT_FN,11)
0076 #define K_F13       K(KT_FN,12)
0077 #define K_F14       K(KT_FN,13)
0078 #define K_F15       K(KT_FN,14)
0079 #define K_F16       K(KT_FN,15)
0080 #define K_F17       K(KT_FN,16)
0081 #define K_F18       K(KT_FN,17)
0082 #define K_F19       K(KT_FN,18)
0083 #define K_F20       K(KT_FN,19)
0084 #define K_FIND      K(KT_FN,20)
0085 #define K_INSERT    K(KT_FN,21)
0086 #define K_REMOVE    K(KT_FN,22)
0087 #define K_SELECT    K(KT_FN,23)
0088 #define K_PGUP      K(KT_FN,24) /* PGUP is a synonym for PRIOR */
0089 #define K_PGDN      K(KT_FN,25) /* PGDN is a synonym for NEXT */
0090 #define K_MACRO     K(KT_FN,26)
0091 #define K_HELP      K(KT_FN,27)
0092 #define K_DO        K(KT_FN,28)
0093 #define K_PAUSE     K(KT_FN,29)
0094 #define K_F21       K(KT_FN,30)
0095 #define K_F22       K(KT_FN,31)
0096 #define K_F23       K(KT_FN,32)
0097 #define K_F24       K(KT_FN,33)
0098 #define K_F25       K(KT_FN,34)
0099 #define K_F26       K(KT_FN,35)
0100 #define K_F27       K(KT_FN,36)
0101 #define K_F28       K(KT_FN,37)
0102 #define K_F29       K(KT_FN,38)
0103 #define K_F30       K(KT_FN,39)
0104 #define K_F31       K(KT_FN,40)
0105 #define K_F32       K(KT_FN,41)
0106 #define K_F33       K(KT_FN,42)
0107 #define K_F34       K(KT_FN,43)
0108 #define K_F35       K(KT_FN,44)
0109 #define K_F36       K(KT_FN,45)
0110 #define K_F37       K(KT_FN,46)
0111 #define K_F38       K(KT_FN,47)
0112 #define K_F39       K(KT_FN,48)
0113 #define K_F40       K(KT_FN,49)
0114 #define K_F41       K(KT_FN,50)
0115 #define K_F42       K(KT_FN,51)
0116 #define K_F43       K(KT_FN,52)
0117 #define K_F44       K(KT_FN,53)
0118 #define K_F45       K(KT_FN,54)
0119 #define K_F46       K(KT_FN,55)
0120 #define K_F47       K(KT_FN,56)
0121 #define K_F48       K(KT_FN,57)
0122 #define K_F49       K(KT_FN,58)
0123 #define K_F50       K(KT_FN,59)
0124 #define K_F51       K(KT_FN,60)
0125 #define K_F52       K(KT_FN,61)
0126 #define K_F53       K(KT_FN,62)
0127 #define K_F54       K(KT_FN,63)
0128 #define K_F55       K(KT_FN,64)
0129 #define K_F56       K(KT_FN,65)
0130 #define K_F57       K(KT_FN,66)
0131 #define K_F58       K(KT_FN,67)
0132 #define K_F59       K(KT_FN,68)
0133 #define K_F60       K(KT_FN,69)
0134 #define K_F61       K(KT_FN,70)
0135 #define K_F62       K(KT_FN,71)
0136 #define K_F63       K(KT_FN,72)
0137 #define K_F64       K(KT_FN,73)
0138 #define K_F65       K(KT_FN,74)
0139 #define K_F66       K(KT_FN,75)
0140 #define K_F67       K(KT_FN,76)
0141 #define K_F68       K(KT_FN,77)
0142 #define K_F69       K(KT_FN,78)
0143 #define K_F70       K(KT_FN,79)
0144 #define K_F71       K(KT_FN,80)
0145 #define K_F72       K(KT_FN,81)
0146 #define K_F73       K(KT_FN,82)
0147 #define K_F74       K(KT_FN,83)
0148 #define K_F75       K(KT_FN,84)
0149 #define K_F76       K(KT_FN,85)
0150 #define K_F77       K(KT_FN,86)
0151 #define K_F78       K(KT_FN,87)
0152 #define K_F79       K(KT_FN,88)
0153 #define K_F80       K(KT_FN,89)
0154 #define K_F81       K(KT_FN,90)
0155 #define K_F82       K(KT_FN,91)
0156 #define K_F83       K(KT_FN,92)
0157 #define K_F84       K(KT_FN,93)
0158 #define K_F85       K(KT_FN,94)
0159 #define K_F86       K(KT_FN,95)
0160 #define K_F87       K(KT_FN,96)
0161 #define K_F88       K(KT_FN,97)
0162 #define K_F89       K(KT_FN,98)
0163 #define K_F90       K(KT_FN,99)
0164 #define K_F91       K(KT_FN,100)
0165 #define K_F92       K(KT_FN,101)
0166 #define K_F93       K(KT_FN,102)
0167 #define K_F94       K(KT_FN,103)
0168 #define K_F95       K(KT_FN,104)
0169 #define K_F96       K(KT_FN,105)
0170 #define K_F97       K(KT_FN,106)
0171 #define K_F98       K(KT_FN,107)
0172 #define K_F99       K(KT_FN,108)
0173 #define K_F100      K(KT_FN,109)
0174 #define K_F101      K(KT_FN,110)
0175 #define K_F102      K(KT_FN,111)
0176 #define K_F103      K(KT_FN,112)
0177 #define K_F104      K(KT_FN,113)
0178 #define K_F105      K(KT_FN,114)
0179 #define K_F106      K(KT_FN,115)
0180 #define K_F107      K(KT_FN,116)
0181 #define K_F108      K(KT_FN,117)
0182 #define K_F109      K(KT_FN,118)
0183 #define K_F110      K(KT_FN,119)
0184 #define K_F111      K(KT_FN,120)
0185 #define K_F112      K(KT_FN,121)
0186 #define K_F113      K(KT_FN,122)
0187 #define K_F114      K(KT_FN,123)
0188 #define K_F115      K(KT_FN,124)
0189 #define K_F116      K(KT_FN,125)
0190 #define K_F117      K(KT_FN,126)
0191 #define K_F118      K(KT_FN,127)
0192 #define K_F119      K(KT_FN,128)
0193 #define K_F120      K(KT_FN,129)
0194 #define K_F121      K(KT_FN,130)
0195 #define K_F122      K(KT_FN,131)
0196 #define K_F123      K(KT_FN,132)
0197 #define K_F124      K(KT_FN,133)
0198 #define K_F125      K(KT_FN,134)
0199 #define K_F126      K(KT_FN,135)
0200 #define K_F127      K(KT_FN,136)
0201 #define K_F128      K(KT_FN,137)
0202 #define K_F129      K(KT_FN,138)
0203 #define K_F130      K(KT_FN,139)
0204 #define K_F131      K(KT_FN,140)
0205 #define K_F132      K(KT_FN,141)
0206 #define K_F133      K(KT_FN,142)
0207 #define K_F134      K(KT_FN,143)
0208 #define K_F135      K(KT_FN,144)
0209 #define K_F136      K(KT_FN,145)
0210 #define K_F137      K(KT_FN,146)
0211 #define K_F138      K(KT_FN,147)
0212 #define K_F139      K(KT_FN,148)
0213 #define K_F140      K(KT_FN,149)
0214 #define K_F141      K(KT_FN,150)
0215 #define K_F142      K(KT_FN,151)
0216 #define K_F143      K(KT_FN,152)
0217 #define K_F144      K(KT_FN,153)
0218 #define K_F145      K(KT_FN,154)
0219 #define K_F146      K(KT_FN,155)
0220 #define K_F147      K(KT_FN,156)
0221 #define K_F148      K(KT_FN,157)
0222 #define K_F149      K(KT_FN,158)
0223 #define K_F150      K(KT_FN,159)
0224 #define K_F151      K(KT_FN,160)
0225 #define K_F152      K(KT_FN,161)
0226 #define K_F153      K(KT_FN,162)
0227 #define K_F154      K(KT_FN,163)
0228 #define K_F155      K(KT_FN,164)
0229 #define K_F156      K(KT_FN,165)
0230 #define K_F157      K(KT_FN,166)
0231 #define K_F158      K(KT_FN,167)
0232 #define K_F159      K(KT_FN,168)
0233 #define K_F160      K(KT_FN,169)
0234 #define K_F161      K(KT_FN,170)
0235 #define K_F162      K(KT_FN,171)
0236 #define K_F163      K(KT_FN,172)
0237 #define K_F164      K(KT_FN,173)
0238 #define K_F165      K(KT_FN,174)
0239 #define K_F166      K(KT_FN,175)
0240 #define K_F167      K(KT_FN,176)
0241 #define K_F168      K(KT_FN,177)
0242 #define K_F169      K(KT_FN,178)
0243 #define K_F170      K(KT_FN,179)
0244 #define K_F171      K(KT_FN,180)
0245 #define K_F172      K(KT_FN,181)
0246 #define K_F173      K(KT_FN,182)
0247 #define K_F174      K(KT_FN,183)
0248 #define K_F175      K(KT_FN,184)
0249 #define K_F176      K(KT_FN,185)
0250 #define K_F177      K(KT_FN,186)
0251 #define K_F178      K(KT_FN,187)
0252 #define K_F179      K(KT_FN,188)
0253 #define K_F180      K(KT_FN,189)
0254 #define K_F181      K(KT_FN,190)
0255 #define K_F182      K(KT_FN,191)
0256 #define K_F183      K(KT_FN,192)
0257 #define K_F184      K(KT_FN,193)
0258 #define K_F185      K(KT_FN,194)
0259 #define K_F186      K(KT_FN,195)
0260 #define K_F187      K(KT_FN,196)
0261 #define K_F188      K(KT_FN,197)
0262 #define K_F189      K(KT_FN,198)
0263 #define K_F190      K(KT_FN,199)
0264 #define K_F191      K(KT_FN,200)
0265 #define K_F192      K(KT_FN,201)
0266 #define K_F193      K(KT_FN,202)
0267 #define K_F194      K(KT_FN,203)
0268 #define K_F195      K(KT_FN,204)
0269 #define K_F196      K(KT_FN,205)
0270 #define K_F197      K(KT_FN,206)
0271 #define K_F198      K(KT_FN,207)
0272 #define K_F199      K(KT_FN,208)
0273 #define K_F200      K(KT_FN,209)
0274 #define K_F201      K(KT_FN,210)
0275 #define K_F202      K(KT_FN,211)
0276 #define K_F203      K(KT_FN,212)
0277 #define K_F204      K(KT_FN,213)
0278 #define K_F205      K(KT_FN,214)
0279 #define K_F206      K(KT_FN,215)
0280 #define K_F207      K(KT_FN,216)
0281 #define K_F208      K(KT_FN,217)
0282 #define K_F209      K(KT_FN,218)
0283 #define K_F210      K(KT_FN,219)
0284 #define K_F211      K(KT_FN,220)
0285 #define K_F212      K(KT_FN,221)
0286 #define K_F213      K(KT_FN,222)
0287 #define K_F214      K(KT_FN,223)
0288 #define K_F215      K(KT_FN,224)
0289 #define K_F216      K(KT_FN,225)
0290 #define K_F217      K(KT_FN,226)
0291 #define K_F218      K(KT_FN,227)
0292 #define K_F219      K(KT_FN,228)
0293 #define K_F220      K(KT_FN,229)
0294 #define K_F221      K(KT_FN,230)
0295 #define K_F222      K(KT_FN,231)
0296 #define K_F223      K(KT_FN,232)
0297 #define K_F224      K(KT_FN,233)
0298 #define K_F225      K(KT_FN,234)
0299 #define K_F226      K(KT_FN,235)
0300 #define K_F227      K(KT_FN,236)
0301 #define K_F228      K(KT_FN,237)
0302 #define K_F229      K(KT_FN,238)
0303 #define K_F230      K(KT_FN,239)
0304 #define K_F231      K(KT_FN,240)
0305 #define K_F232      K(KT_FN,241)
0306 #define K_F233      K(KT_FN,242)
0307 #define K_F234      K(KT_FN,243)
0308 #define K_F235      K(KT_FN,244)
0309 #define K_F236      K(KT_FN,245)
0310 #define K_F237      K(KT_FN,246)
0311 #define K_F238      K(KT_FN,247)
0312 #define K_F239      K(KT_FN,248)
0313 #define K_F240      K(KT_FN,249)
0314 #define K_F241      K(KT_FN,250)
0315 #define K_F242      K(KT_FN,251)
0316 #define K_F243      K(KT_FN,252)
0317 #define K_F244      K(KT_FN,253)
0318 #define K_F245      K(KT_FN,254)
0319 #define K_UNDO      K(KT_FN,255)
0320 
0321 #define K_HOLE      K(KT_SPEC,0)
0322 #define K_ENTER     K(KT_SPEC,1)
0323 #define K_SH_REGS   K(KT_SPEC,2)
0324 #define K_SH_MEM    K(KT_SPEC,3)
0325 #define K_SH_STAT   K(KT_SPEC,4)
0326 #define K_BREAK     K(KT_SPEC,5)
0327 #define K_CONS      K(KT_SPEC,6)
0328 #define K_CAPS      K(KT_SPEC,7)
0329 #define K_NUM       K(KT_SPEC,8)
0330 #define K_HOLD      K(KT_SPEC,9)
0331 #define K_SCROLLFORW    K(KT_SPEC,10)
0332 #define K_SCROLLBACK    K(KT_SPEC,11)
0333 #define K_BOOT      K(KT_SPEC,12)
0334 #define K_CAPSON    K(KT_SPEC,13)
0335 #define K_COMPOSE   K(KT_SPEC,14)
0336 #define K_SAK       K(KT_SPEC,15)
0337 #define K_DECRCONSOLE   K(KT_SPEC,16)
0338 #define K_INCRCONSOLE   K(KT_SPEC,17)
0339 #define K_SPAWNCONSOLE  K(KT_SPEC,18)
0340 #define K_BARENUMLOCK   K(KT_SPEC,19)
0341 
0342 #define K_ALLOCATED K(KT_SPEC,126) /* dynamically allocated keymap */
0343 #define K_NOSUCHMAP K(KT_SPEC,127) /* returned by KDGKBENT */
0344 
0345 #define K_P0        K(KT_PAD,0)
0346 #define K_P1        K(KT_PAD,1)
0347 #define K_P2        K(KT_PAD,2)
0348 #define K_P3        K(KT_PAD,3)
0349 #define K_P4        K(KT_PAD,4)
0350 #define K_P5        K(KT_PAD,5)
0351 #define K_P6        K(KT_PAD,6)
0352 #define K_P7        K(KT_PAD,7)
0353 #define K_P8        K(KT_PAD,8)
0354 #define K_P9        K(KT_PAD,9)
0355 #define K_PPLUS     K(KT_PAD,10)    /* key-pad plus */
0356 #define K_PMINUS    K(KT_PAD,11)    /* key-pad minus */
0357 #define K_PSTAR     K(KT_PAD,12)    /* key-pad asterisk (star) */
0358 #define K_PSLASH    K(KT_PAD,13)    /* key-pad slash */
0359 #define K_PENTER    K(KT_PAD,14)    /* key-pad enter */
0360 #define K_PCOMMA    K(KT_PAD,15)    /* key-pad comma: kludge... */
0361 #define K_PDOT      K(KT_PAD,16)    /* key-pad dot (period): kludge... */
0362 #define K_PPLUSMINUS    K(KT_PAD,17)    /* key-pad plus/minus */
0363 #define K_PPARENL   K(KT_PAD,18)    /* key-pad left parenthesis */
0364 #define K_PPARENR   K(KT_PAD,19)    /* key-pad right parenthesis */
0365 
0366 #define NR_PAD      20
0367 
0368 #define K_DGRAVE    K(KT_DEAD,0)
0369 #define K_DACUTE    K(KT_DEAD,1)
0370 #define K_DCIRCM    K(KT_DEAD,2)
0371 #define K_DTILDE    K(KT_DEAD,3)
0372 #define K_DDIERE    K(KT_DEAD,4)
0373 #define K_DCEDIL    K(KT_DEAD,5)
0374 
0375 #define NR_DEAD     6
0376 
0377 #define K_DOWN      K(KT_CUR,0)
0378 #define K_LEFT      K(KT_CUR,1)
0379 #define K_RIGHT     K(KT_CUR,2)
0380 #define K_UP        K(KT_CUR,3)
0381 
0382 #define K_SHIFT     K(KT_SHIFT,KG_SHIFT)
0383 #define K_CTRL      K(KT_SHIFT,KG_CTRL)
0384 #define K_ALT       K(KT_SHIFT,KG_ALT)
0385 #define K_ALTGR     K(KT_SHIFT,KG_ALTGR)
0386 #define K_SHIFTL    K(KT_SHIFT,KG_SHIFTL)
0387 #define K_SHIFTR    K(KT_SHIFT,KG_SHIFTR)
0388 #define K_CTRLL     K(KT_SHIFT,KG_CTRLL)
0389 #define K_CTRLR     K(KT_SHIFT,KG_CTRLR)
0390 #define K_CAPSSHIFT K(KT_SHIFT,KG_CAPSSHIFT)
0391 
0392 #define K_ASC0      K(KT_ASCII,0)
0393 #define K_ASC1      K(KT_ASCII,1)
0394 #define K_ASC2      K(KT_ASCII,2)
0395 #define K_ASC3      K(KT_ASCII,3)
0396 #define K_ASC4      K(KT_ASCII,4)
0397 #define K_ASC5      K(KT_ASCII,5)
0398 #define K_ASC6      K(KT_ASCII,6)
0399 #define K_ASC7      K(KT_ASCII,7)
0400 #define K_ASC8      K(KT_ASCII,8)
0401 #define K_ASC9      K(KT_ASCII,9)
0402 #define K_HEX0      K(KT_ASCII,10)
0403 #define K_HEX1      K(KT_ASCII,11)
0404 #define K_HEX2      K(KT_ASCII,12)
0405 #define K_HEX3      K(KT_ASCII,13)
0406 #define K_HEX4      K(KT_ASCII,14)
0407 #define K_HEX5      K(KT_ASCII,15)
0408 #define K_HEX6      K(KT_ASCII,16)
0409 #define K_HEX7      K(KT_ASCII,17)
0410 #define K_HEX8      K(KT_ASCII,18)
0411 #define K_HEX9      K(KT_ASCII,19)
0412 #define K_HEXa      K(KT_ASCII,20)
0413 #define K_HEXb      K(KT_ASCII,21)
0414 #define K_HEXc      K(KT_ASCII,22)
0415 #define K_HEXd      K(KT_ASCII,23)
0416 #define K_HEXe      K(KT_ASCII,24)
0417 #define K_HEXf      K(KT_ASCII,25)
0418 
0419 #define NR_ASCII    26
0420 
0421 #define K_SHIFTLOCK K(KT_LOCK,KG_SHIFT)
0422 #define K_CTRLLOCK  K(KT_LOCK,KG_CTRL)
0423 #define K_ALTLOCK   K(KT_LOCK,KG_ALT)
0424 #define K_ALTGRLOCK K(KT_LOCK,KG_ALTGR)
0425 #define K_SHIFTLLOCK    K(KT_LOCK,KG_SHIFTL)
0426 #define K_SHIFTRLOCK    K(KT_LOCK,KG_SHIFTR)
0427 #define K_CTRLLLOCK K(KT_LOCK,KG_CTRLL)
0428 #define K_CTRLRLOCK K(KT_LOCK,KG_CTRLR)
0429 
0430 #define K_SHIFT_SLOCK   K(KT_SLOCK,KG_SHIFT)
0431 #define K_CTRL_SLOCK    K(KT_SLOCK,KG_CTRL)
0432 #define K_ALT_SLOCK K(KT_SLOCK,KG_ALT)
0433 #define K_ALTGR_SLOCK   K(KT_SLOCK,KG_ALTGR)
0434 #define K_SHIFTL_SLOCK  K(KT_SLOCK,KG_SHIFTL)
0435 #define K_SHIFTR_SLOCK  K(KT_SLOCK,KG_SHIFTR)
0436 #define K_CTRLL_SLOCK   K(KT_SLOCK,KG_CTRLL)
0437 #define K_CTRLR_SLOCK   K(KT_SLOCK,KG_CTRLR)
0438 
0439 #define NR_LOCK     8
0440 
0441 #define MAX_DIACR   256
0442 
0443 extern struct kbdiacr accent_table[MAX_DIACR];
0444 extern unsigned int accent_table_size;
0445 
0446 /* kbd_kern.h --- header file from linux ---  */
0447 extern int shift_state;
0448 
0449 extern char *func_table[MAX_NR_FUNC];
0450 extern char func_buf[];
0451 extern char *funcbufptr;
0452 extern int funcbufsize, funcbufleft;
0453 
0454 /*
0455  * kbd->xxx contains the VC-local things (flag settings etc..)
0456  *
0457  * Note: externally visible are LED_SCR, LED_NUM, LED_CAP defined in kd.h
0458  *       The code in KDGETLED / KDSETLED depends on the internal and
0459  *       external order being the same.
0460  *
0461  * Note: lockstate is used as index in the array key_map.
0462  */
0463 struct kbd_struct {
0464 
0465     unsigned char lockstate;
0466 /* 8 modifiers - the names do not have any meaning at all;
0467    they can be associated to arbitrarily chosen keys */
0468 #define VC_SHIFTLOCK    KG_SHIFT    /* shift lock mode */
0469 #define VC_ALTGRLOCK    KG_ALTGR    /* altgr lock mode */
0470 #define VC_CTRLLOCK KG_CTRL     /* control lock mode */
0471 #define VC_ALTLOCK  KG_ALT      /* alt lock mode */
0472 #define VC_SHIFTLLOCK   KG_SHIFTL   /* shiftl lock mode */
0473 #define VC_SHIFTRLOCK   KG_SHIFTR   /* shiftr lock mode */
0474 #define VC_CTRLLLOCK    KG_CTRLL    /* ctrll lock mode */
0475 #define VC_CTRLRLOCK    KG_CTRLR    /* ctrlr lock mode */
0476     unsigned char slockstate;   /* for `sticky' Shift, Ctrl, etc. */
0477 
0478     unsigned char ledmode:2;    /* one 2-bit value */
0479 #define LED_SHOW_FLAGS 0        /* traditional state */
0480 #define LED_SHOW_IOCTL 1        /* only change leds upon ioctl */
0481 #define LED_SHOW_MEM 2          /* `heartbeat': peek into memory */
0482 
0483     unsigned char ledflagstate:3;   /* flags, not lights */
0484     unsigned char default_ledflagstate:3;
0485 #define VC_SCROLLOCK    0   /* scroll-lock mode */
0486 #define VC_NUMLOCK  1   /* numeric lock mode */
0487 #define VC_CAPSLOCK 2   /* capslock mode */
0488 
0489     unsigned char kbdmode:2;    /* one 2-bit value */
0490 #define VC_XLATE    0   /* translate keycodes using keymap */
0491 #define VC_MEDIUMRAW    1   /* medium raw (keycode) mode */
0492 #define VC_RAW      2   /* raw (scancode) mode */
0493 #define VC_UNICODE  3   /* Unicode mode */
0494 
0495     unsigned char modeflags:5;
0496 #define VC_APPLIC   0   /* application key mode */
0497 #define VC_CKMODE   1   /* cursor key mode */
0498 #define VC_REPEAT   2   /* keyboard repeat */
0499 #define VC_CRLF     3   /* 0 - enter sends CR, 1 - enter sends CRLF */
0500 #define VC_META     4   /* 0 - meta, 1 - meta=prefix with ESC */
0501 };
0502 
0503 extern struct kbd_struct kbd_table[];
0504 
0505 
0506 void kbd_set_driver_handler(
0507   void ( *handler )( void *, unsigned short, unsigned long )
0508 );
0509 
0510 static inline void show_console(void)
0511 {
0512 }
0513 
0514 static inline void set_console(int nr)
0515 {
0516 }
0517 
0518 void set_leds(void);
0519 
0520 static inline int vc_kbd_mode(struct kbd_struct * kbd, int flag)
0521 {
0522   return ((kbd->modeflags >> flag) & 1);
0523 }
0524 
0525 static inline int vc_kbd_led(struct kbd_struct * kbd, int flag)
0526 {
0527   return ((kbd->ledflagstate >> flag) & 1);
0528 }
0529 
0530 static inline void set_vc_kbd_mode(struct kbd_struct * kbd, int flag)
0531 {
0532   kbd->modeflags |= 1 << flag;
0533 }
0534 
0535 static inline void set_vc_kbd_led(struct kbd_struct * kbd, int flag)
0536 {
0537   kbd->ledflagstate |= 1 << flag;
0538 }
0539 
0540 static inline void clr_vc_kbd_mode(struct kbd_struct * kbd, int flag)
0541 {
0542   kbd->modeflags &= ~(1 << flag);
0543 }
0544 
0545 static inline void clr_vc_kbd_led(struct kbd_struct * kbd, int flag)
0546 {
0547   kbd->ledflagstate &= ~(1 << flag);
0548 }
0549 
0550 static inline void chg_vc_kbd_lock(struct kbd_struct * kbd, int flag)
0551 {
0552   kbd->lockstate ^= 1 << flag;
0553 }
0554 
0555 static inline void chg_vc_kbd_slock(struct kbd_struct * kbd, int flag)
0556 {
0557   kbd->slockstate ^= 1 << flag;
0558 }
0559 
0560 static inline void chg_vc_kbd_mode(struct kbd_struct * kbd, int flag)
0561 {
0562   kbd->modeflags ^= 1 << flag;
0563 }
0564 
0565 static inline void chg_vc_kbd_led(struct kbd_struct * kbd, int flag)
0566 {
0567   kbd->ledflagstate ^= 1 << flag;
0568   set_leds();
0569 }
0570 
0571 #define U(x) ((x) ^ 0xf000)
0572 
0573 /* keyboard.c */
0574 int kbd_init(void);
0575 int getkeycode(unsigned int scancode);
0576 int setkeycode(unsigned int scancode, unsigned int keycode);
0577 void compute_shiftstate(void);
0578 unsigned char getledstate(void);
0579 void setledstate(struct kbd_struct *kbd, unsigned int led);
0580 void handle_scancode(unsigned char scancode, int down);
0581 
0582 /* kbd_parser.c */
0583 void register_kbd_msg_queue( char *qname, int port );
0584 void unregister_kbd_msg_queue( int port );
0585 
0586 /* defkeymap.c */
0587 extern unsigned int keymap_count;
0588 
0589 /* inch.c */
0590 void add_to_queue( unsigned short );
0591 int getch( void );
0592 int BSP_wait_polled_input(void);
0593 int rtems_kbpoll( void );
0594 
0595 /* outch.c */
0596 void _IBMPC_initVideo(void);
0597 
0598 /* pc_keyb.c */
0599 void keyboard_interrupt(void *unused);
0600 
0601 /* vt.c */
0602 int vt_ioctl( unsigned int cmd, unsigned long arg);
0603 
0604 #endif