Changeset 79460ae in mainline for kbd/arch/ia32/src/kbd.c


Ignore:
Timestamp:
2006-05-30T10:40:17Z (19 years ago)
Author:
Josef Cejka <malyzelenyhnus@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
44c6d88d
Parents:
f25b73d6
Message:

Basic support for console driver.
Does not provide separate screens yet.
TODO fix many unhandled states.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kbd/arch/ia32/src/kbd.c

    rf25b73d6 r79460ae  
    2929
    3030#include <arch/kbd.h>
    31 #include <key_buffer.h>
    3231#include <ipc/ipc.h>
    3332
     
    8079        ' ',
    8180        SPECIAL, /* 0x3a - CapsLock */
    82         SPECIAL, /* 0x3b - F1 */
    83         SPECIAL, /* 0x3c - F2 */
    84         SPECIAL, /* 0x3d - F3 */
    85         SPECIAL, /* 0x3e - F4 */
    86         SPECIAL, /* 0x3f - F5 */
    87         SPECIAL, /* 0x40 - F6 */
    88         SPECIAL, /* 0x41 - F7 */
    89         SPECIAL, /* 0x42 - F8 */
    90         SPECIAL, /* 0x43 - F9 */
    91         SPECIAL, /* 0x44 - F10 */
     81        0x3b, /* 0x3b - F1 */
     82//      SPECIAL, /* 0x3b - F1 */
     83        0x3c, /* 0x3c - F2 */
     84//      SPECIAL, /* 0x3c - F2 */
     85        0x3d, /* 0x3d - F3 */
     86//      SPECIAL, /* 0x3d - F3 */
     87        0x3e, /* 0x3e - F4 */
     88//      SPECIAL, /* 0x3e - F4 */
     89//      SPECIAL, /* 0x3f - F5 */
     90        0x3f, /* 0x3f - F5 */
     91//      SPECIAL, /* 0x40 - F6 */
     92        0x40, /* 0x40 - F6 */
     93//      SPECIAL, /* 0x41 - F7 */
     94        0x41, /* 0x41 - F7 */
     95//      SPECIAL, /* 0x42 - F8 */
     96        0x42, /* 0x42 - F8 */
     97//      SPECIAL, /* 0x43 - F9 */
     98        0x43, /* 0x43 - F9 */
     99//      SPECIAL, /* 0x44 - F10 */
     100        0x44, /* 0x44 - F10 */
    92101        SPECIAL, /* 0x45 - NumLock */
    93102        SPECIAL, /* 0x46 - ScrollLock */
     
    160169        ' ',
    161170        SPECIAL, /* 0x3a - CapsLock */
    162         SPECIAL, /* 0x3b - F1 */
    163         SPECIAL, /* 0x3c - F2 */
    164         SPECIAL, /* 0x3d - F3 */
    165         SPECIAL, /* 0x3e - F4 */
    166         SPECIAL, /* 0x3f - F5 */
    167         SPECIAL, /* 0x40 - F6 */
    168         SPECIAL, /* 0x41 - F7 */
    169         SPECIAL, /* 0x42 - F8 */
    170         SPECIAL, /* 0x43 - F9 */
    171         SPECIAL, /* 0x44 - F10 */
     171        0x3b, /* 0x3b - F1 */
     172        0x3c, /* 0x3c - F2 */
     173        0x3d, /* 0x3d - F3 */
     174        0x3e, /* 0x3e - F4 */
     175        0x3f, /* 0x3f - F5 */
     176        0x40, /* 0x40 - F6 */
     177        0x41, /* 0x41 - F7 */
     178        0x42, /* 0x42 - F8 */
     179        0x43, /* 0x43 - F9 */
     180        0x44, /* 0x44 - F10 */
     181//      SPECIAL, /* 0x3b - F1 */
     182//      SPECIAL, /* 0x3c - F2 */
     183//      SPECIAL, /* 0x3d - F3 */
     184//      SPECIAL, /* 0x3e - F4 */
     185//      SPECIAL, /* 0x3f - F5 */
     186//      SPECIAL, /* 0x40 - F6 */
     187//      SPECIAL, /* 0x41 - F7 */
     188//      SPECIAL, /* 0x42 - F8 */
     189//      SPECIAL, /* 0x43 - F9 */
     190//      SPECIAL, /* 0x44 - F10 */
    172191        SPECIAL, /* 0x45 - NumLock */
    173192        SPECIAL, /* 0x46 - ScrollLock */
     
    231250};
    232251
    233 static int key_released(unsigned char key)
     252static int key_released(keybuffer_t *keybuffer, unsigned char key)
    234253{
    235254        switch (key) {
     
    250269}
    251270
    252 static int key_pressed(unsigned char key)
     271static int key_pressed(keybuffer_t *keybuffer, unsigned char key)
    253272{
    254273        char *map = sc_primary_map;
     
    268287                        break;
    269288                case SC_LEFTARR:
    270                         if (key_buffer_available() >= 3) {
    271                                 key_buffer_push(0x1b); 
    272                                 key_buffer_push(0x5b); 
    273                                 key_buffer_push(0x44); 
     289                        if (keybuffer_available(keybuffer) >= 3) {
     290                                keybuffer_push(keybuffer, 0x1b);       
     291                                keybuffer_push(keybuffer, 0x5b);       
     292                                keybuffer_push(keybuffer, 0x44);       
    274293                        }
    275294                        break;
    276295                case SC_RIGHTARR:
    277                         if (key_buffer_available() >= 3) {
    278                                 key_buffer_push(0x1b); 
    279                                 key_buffer_push(0x5b); 
    280                                 key_buffer_push(0x43); 
     296                        if (keybuffer_available(keybuffer) >= 3) {
     297                                keybuffer_push(keybuffer, 0x1b);       
     298                                keybuffer_push(keybuffer, 0x5b);       
     299                                keybuffer_push(keybuffer, 0x43);       
    281300                        }
    282301                        break;
    283302                case SC_UPARR:
    284                         if (key_buffer_available() >= 3) {
    285                                 key_buffer_push(0x1b); 
    286                                 key_buffer_push(0x5b); 
    287                                 key_buffer_push(0x41); 
     303                        if (keybuffer_available(keybuffer) >= 3) {
     304                                keybuffer_push(keybuffer, 0x1b);       
     305                                keybuffer_push(keybuffer, 0x5b);       
     306                                keybuffer_push(keybuffer, 0x41);       
    288307                        }
    289308                        break;
    290309                case SC_DOWNARR:
    291                         if (key_buffer_available() >= 3) {
    292                                 key_buffer_push(0x1b); 
    293                                 key_buffer_push(0x5b); 
    294                                 key_buffer_push(0x42); 
     310                        if (keybuffer_available(keybuffer) >= 3) {
     311                                keybuffer_push(keybuffer, 0x1b);       
     312                                keybuffer_push(keybuffer, 0x5b);       
     313                                keybuffer_push(keybuffer, 0x42);       
    295314                        }
    296315                        break;
    297316                case SC_HOME:
    298                         if (key_buffer_available() >= 3) {
    299                                 key_buffer_push(0x1b); 
    300                                 key_buffer_push(0x4f); 
    301                                 key_buffer_push(0x48); 
     317                        if (keybuffer_available(keybuffer) >= 3) {
     318                                keybuffer_push(keybuffer, 0x1b);       
     319                                keybuffer_push(keybuffer, 0x4f);       
     320                                keybuffer_push(keybuffer, 0x48);       
    302321                        }
    303322                        break;
    304323                case SC_END:
    305                         if (key_buffer_available() >= 3) {
    306                                 key_buffer_push(0x1b); 
    307                                 key_buffer_push(0x4f); 
    308                                 key_buffer_push(0x46); 
     324                        if (keybuffer_available(keybuffer) >= 3) {
     325                                keybuffer_push(keybuffer, 0x1b);       
     326                                keybuffer_push(keybuffer, 0x4f);       
     327                                keybuffer_push(keybuffer, 0x46);       
    309328                        }
    310329                        break;
    311330                case SC_DELETE:
    312                         if (key_buffer_available() >= 4) {
    313                                 key_buffer_push(0x1b); 
    314                                 key_buffer_push(0x5b); 
    315                                 key_buffer_push(0x33); 
    316                                 key_buffer_push(0x7e); 
     331                        if (keybuffer_available(keybuffer) >= 4) {
     332                                keybuffer_push(keybuffer, 0x1b);       
     333                                keybuffer_push(keybuffer, 0x5b);       
     334                                keybuffer_push(keybuffer, 0x33);       
     335                                keybuffer_push(keybuffer, 0x7e);       
    317336                        }
    318337                        break;
     
    325344                        if (shift)
    326345                                map = sc_secondary_map;
    327                         key_buffer_push(map[key]);     
     346                        keybuffer_push(keybuffer, map[key]);   
    328347                        break;
    329348        }
     
    338357}
    339358
    340 int kbd_arch_process(int scan_code)
     359int kbd_arch_process(keybuffer_t *keybuffer, int scan_code)
    341360{
    342361        if (scan_code != IGNORE_CODE) {
    343362                if (scan_code & KEY_RELEASE)
    344                         key_released(scan_code ^ KEY_RELEASE);
     363                        key_released(keybuffer, scan_code ^ KEY_RELEASE);
    345364                else
    346                         key_pressed(scan_code);
     365                        key_pressed(keybuffer, scan_code);
    347366        }
    348367        return  1;
Note: See TracChangeset for help on using the changeset viewer.