include/keyboard.h

来源:互联网 发布:魅蓝手机怎么设置网络 编辑:程序博客网 时间:2024/05/22 04:24
Code:
  1. /*  
  2.     By Marcus Xing  
  3.     include/keyboard.h  
  4.     键盘有关的信息  
  5. */  
  6.   
  7. /*  
  8.     forward include:  
  9.     type.h  
  10. */  
  11.   
  12. #ifndef _KEYBOARD_H_   
  13. #define _KEYBOARD_H_   
  14.        
  15.     /* 8042的各端口值 */  
  16.     #define OUT_BUFFER_8042     0x60        /* 输出缓冲区端口号,读 */   
  17.     #define IN_BUFFER_8042      0x60        /* 输入缓冲区端口号,写 */   
  18.     #define STATUS_REG_8042     0x64        /* 状态寄存器,读 */   
  19.     #define COMMAND_REG_8042    0x64        /* 命令寄存器,写 */   
  20.        
  21.     #define KB_SET_LED_COM      0xed        /* 设置LED时发给8048的命令 */   
  22.     #define KB_ACK              0xfa        /* 设置LED时8048收到命令的反馈 */   
  23.        
  24.     #define BUFFER_SIZE         32          /* 输入缓冲区的大小 */   
  25.       
  26.   #define MAP_COLS              3           /* 映射表的列数 */       
  27.   #define SCAN_CODES            0x80        /* 映射表的行数 */       
  28.            
  29.   #define FLAG_BREAK            0x0080      /* 是否为按起的标志 */       
  30.   #define FLAG_EXT              0x0100      /* 常规功能的标志 */       
  31.   #define FLAG_SHIFT_L          0x0200      /* 左SHIFT键的标志 */       
  32.   #define FLAG_SHIFT_R          0x0400      /* 右SHIFT键的标志 */       
  33.   #define FLAG_CTRL_L           0x0800      /* 左CONTROL键的标志 */       
  34.   #define FLAG_CTRL_R           0x1000      /* 右CONTROL键的标志 */       
  35.   #define FLAG_ALT_L            0x2000      /* 左ALT键的标志 */       
  36.   #define FLAG_ALT_R            0x4000      /* 右ALT键的标志 */       
  37.   #define FLAG_PAD              0x8000      /* 小键盘数字键的标志 */       
  38.            
  39.     #define MASK_RAW            0x01FF      /*    
  40.                                                 raw key value = code passed to tty & MASK_RAW       
  41.                                                 the value can be found either in the keymap column 0       
  42.                                                 or in the list below    
  43.                                             */       
  44.            
  45.   /* 特别的键 */      
  46.     #define ESC         (0x01 + FLAG_EXT)   /* Esc */       
  47.     #define TAB         (0x02 + FLAG_EXT)   /* Tab */       
  48.     #define ENTER       (0x03 + FLAG_EXT)   /* Enter */       
  49.     #define BACKSPACE   (0x04 + FLAG_EXT)   /* BackSpace */       
  50.            
  51.     #define GUI_L       (0x05 + FLAG_EXT)   /* L GUI */       
  52.     #define GUI_R       (0x06 + FLAG_EXT)   /* R GUI */       
  53.     #define APPS        (0x07 + FLAG_EXT)   /* APPS */       
  54.            
  55.     /* Shift, Ctrl, Alt */      
  56.     #define SHIFT_L     (0x08 + FLAG_EXT)   /* L Shift */       
  57.     #define SHIFT_R     (0x09 + FLAG_EXT)   /* R Shift */       
  58.     #define CTRL_L      (0x0A + FLAG_EXT)   /* L Ctrl */       
  59.     #define CTRL_R      (0x0B + FLAG_EXT)   /* R Ctrl */       
  60.     #define ALT_L       (0x0C + FLAG_EXT)   /* L Alt */       
  61.     #define ALT_R       (0x0D + FLAG_EXT)   /* R Alt */       
  62.            
  63.     /* Lock keys */      
  64.     #define CAPS_LOCK   (0x0E + FLAG_EXT)   /* Caps Lock */       
  65.     #define NUM_LOCK    (0x0F + FLAG_EXT)   /* Number Lock */       
  66.     #define SCROLL_LOCK (0x10 + FLAG_EXT)   /* Scroll Lock */       
  67.            
  68.     /* Function keys */      
  69.     #define F1      (0x11 + FLAG_EXT)   /* F1       */       
  70.     #define F2      (0x12 + FLAG_EXT)   /* F2       */       
  71.     #define F3      (0x13 + FLAG_EXT)   /* F3       */       
  72.     #define F4      (0x14 + FLAG_EXT)   /* F4       */       
  73.     #define F5      (0x15 + FLAG_EXT)   /* F5       */       
  74.     #define F6      (0x16 + FLAG_EXT)   /* F6       */       
  75.     #define F7      (0x17 + FLAG_EXT)   /* F7       */       
  76.     #define F8      (0x18 + FLAG_EXT)   /* F8       */       
  77.     #define F9      (0x19 + FLAG_EXT)   /* F9       */       
  78.     #define F10     (0x1A + FLAG_EXT)   /* F10      */       
  79.     #define F11     (0x1B + FLAG_EXT)   /* F11      */       
  80.     #define F12     (0x1C + FLAG_EXT)   /* F12      */       
  81.            
  82.     /* Control Pad */      
  83.     #define PRINTSCREEN (0x1D + FLAG_EXT)   /* Print Screen */       
  84.     #define PAUSEBREAK  (0x1E + FLAG_EXT)   /* Pause/Break  */       
  85.     #define INSERT      (0x1F + FLAG_EXT)   /* Insert   */       
  86.     #define DELETE      (0x20 + FLAG_EXT)   /* Delete   */       
  87.     #define HOME        (0x21 + FLAG_EXT)   /* Home     */       
  88.     #define END         (0x22 + FLAG_EXT)   /* End      */       
  89.     #define PAGEUP      (0x23 + FLAG_EXT)   /* Page Up  */       
  90.     #define PAGEDOWN    (0x24 + FLAG_EXT)   /* Page Down */       
  91.     #define UP          (0x25 + FLAG_EXT)   /* Up       */       
  92.     #define DOWN        (0x26 + FLAG_EXT)   /* Down     */       
  93.     #define LEFT        (0x27 + FLAG_EXT)   /* Left     */       
  94.     #define RIGHT       (0x28 + FLAG_EXT)   /* Right    */       
  95.            
  96.     /* ACPI keys */      
  97.     #define POWER       (0x29 + FLAG_EXT)   /* Power    */       
  98.     #define SLEEP       (0x2A + FLAG_EXT)   /* Sleep    */       
  99.     #define WAKE        (0x2B + FLAG_EXT)   /* Wake Up  */       
  100.            
  101.     /* Num Pad */      
  102.     #define PAD_SLASH   (0x2C + FLAG_EXT)   /* /        */       
  103.     #define PAD_STAR    (0x2D + FLAG_EXT)   /* *        */       
  104.     #define PAD_MINUS   (0x2E + FLAG_EXT)   /* -        */       
  105.     #define PAD_PLUS    (0x2F + FLAG_EXT)   /* +        */       
  106.     #define PAD_ENTER   (0x30 + FLAG_EXT)   /* Enter    */       
  107.     #define PAD_DOT     (0x31 + FLAG_EXT)   /* .        */       
  108.     #define PAD_0       (0x32 + FLAG_EXT)   /* 0        */       
  109.     #define PAD_1       (0x33 + FLAG_EXT)   /* 1        */       
  110.     #define PAD_2       (0x34 + FLAG_EXT)   /* 2        */       
  111.     #define PAD_3       (0x35 + FLAG_EXT)   /* 3        */       
  112.     #define PAD_4       (0x36 + FLAG_EXT)   /* 4        */       
  113.     #define PAD_5       (0x37 + FLAG_EXT)   /* 5        */       
  114.     #define PAD_6       (0x38 + FLAG_EXT)   /* 6        */       
  115.     #define PAD_7       (0x39 + FLAG_EXT)   /* 7        */       
  116.     #define PAD_8       (0x3A + FLAG_EXT)   /* 8        */       
  117.     #define PAD_9       (0x3B + FLAG_EXT)   /* 9        */       
  118.     #define PAD_UP      PAD_8               /* Up       */       
  119.     #define PAD_DOWN    PAD_2               /* Down     */       
  120.     #define PAD_LEFT    PAD_4               /* Left     */       
  121.     #define PAD_RIGHT   PAD_6               /* Right    */       
  122.     #define PAD_HOME    PAD_7               /* Home     */       
  123.     #define PAD_END     PAD_1               /* End      */       
  124.     #define PAD_PAGEUP  PAD_9               /* Page Up  */       
  125.     #define PAD_PAGEDOWN    PAD_3           /* Page Down*/       
  126.     #define PAD_INS     PAD_0               /* Ins      */       
  127.     #define PAD_MID     PAD_5               /* Middle key */       
  128.     #define PAD_DEL     PAD_DOT             /* Del      */    
  129.        
  130.     /* 扫描码输入缓冲区结构,其实是线性循环队列 */  
  131.     typedef struct s_kb_input_buffer   
  132.     {   
  133.         u8 *tail;                           /* 缓冲区队尾 */  
  134.         u8 *head;                           /* 缓冲区队首 */  
  135.         int size;                           /* 缓冲区当前大小 */  
  136.         u8 buffer[BUFFER_SIZE];             /* 缓冲区空间 */  
  137.     }KB_Input_Buffer;   
  138.        
  139. #endif   

 

原创粉丝点击