keyboard.c File Reference

#include "includes.h"

Go to the source code of this file.

Functions

void KeyboardInit (void)
void KeyboardHandler (void)
U8 KeyboardKeyBufferCheckIsr (void)
U8 KeyboardKeyBufferCheck (void)
void KeyboardKeyBufferPutIsr (U8 Data)
U8 KeyboardKeyBufferGet (void)
void KeyboardBusyWait (void)
void KeyboardAckWait (void)
void KeyboardSetLed (void)

Variables

const U8 KeyboardName [] = "KEYBOARD"
U16 TheKeyCode
KEYBOARD_CONTROL KeyboardCtrl


Function Documentation

void KeyboardAckWait ( void   ) 

Definition at line 582 of file keyboard.c.

00582                           {
00583     KeyboardCtrl.Timer=100;
00584     while(KeyboardCtrl.Ack==false){
00585         if(KeyboardCtrl.Timer==0) return; 
00586     }
00587 }

void KeyboardBusyWait ( void   ) 

Definition at line 568 of file keyboard.c.

00568                            {
00569     U8 i;
00570     
00571     KeyboardCtrl.Timer=1000;
00572     while(InByte(KB_STATUS_REG)&0x02){
00573         if(KeyboardCtrl.Timer==0) break;
00574     }
00575 }

void KeyboardHandler ( void   ) 

Definition at line 41 of file keyboard.c.

00041                           {
00042     U8 ScanCode;
00043     U8 KeyCode;
00044     U8 KeyStatus;
00045     
00046     ScanCode=InByte(KB_DATA_REG);
00047     if(ScanCode==KB_ACK){
00048         KeyboardCtrl.Ack=true;
00049         return;
00050     }
00051     switch(KeyboardCtrl.State){
00052         case GENERALCODE_STATE:
00053             if(ScanCode==0xe0){
00054                  KeyboardCtrl.State=EXTENDCODE_STATE;
00055                  break;
00056             }
00057             else if(ScanCode==0xe1){
00058                  KeyboardCtrl.State=EXTENDCODE2_1STCODE_STATE;
00059                  break;
00060             }
00061             KeyStatus=ScanCode&0x80;
00062             ScanCode=ScanCode&0x7f;
00063             switch(ScanCode){
00064                 case KEY_0:
00065                     if(KeyboardCtrl.LeftShift==true) KeyCode=')';
00066                     else if(KeyboardCtrl.RightShift==true) KeyCode=')';
00067                     else  KeyCode='0'; 
00068                     break;
00069                 case KEY_1:
00070                     if(KeyboardCtrl.LeftShift==true) KeyCode='!';
00071                     else if(KeyboardCtrl.RightShift==true) KeyCode='!';
00072                     else  KeyCode='1';
00073                     break; 
00074                 case KEY_2:
00075                     if(KeyboardCtrl.LeftShift==true) KeyCode='@';
00076                     else if(KeyboardCtrl.RightShift==true) KeyCode='@';
00077                     else  KeyCode='2';
00078                     break; 
00079                 case KEY_3:
00080                     if(KeyboardCtrl.LeftShift==true) KeyCode='#';
00081                     else if(KeyboardCtrl.RightShift==true) KeyCode='#';
00082                     else  KeyCode='3';
00083                     break; 
00084                 case KEY_4:
00085                     if(KeyboardCtrl.LeftShift==true) KeyCode='$';
00086                     else if(KeyboardCtrl.RightShift==true) KeyCode='$';
00087                     else  KeyCode='4';
00088                     break; 
00089                 case KEY_5:
00090                     if(KeyboardCtrl.LeftShift==true) KeyCode='%';
00091                     else if(KeyboardCtrl.RightShift==true) KeyCode='%';
00092                     else  KeyCode='5';
00093                     break; 
00094                 case KEY_6:
00095                     if(KeyboardCtrl.LeftShift==true) KeyCode='^';
00096                     else if(KeyboardCtrl.RightShift==true) KeyCode='^';
00097                     else  KeyCode='6';
00098                     break; 
00099                 case KEY_7:
00100                     if(KeyboardCtrl.LeftShift==true) KeyCode='&';
00101                     else if(KeyboardCtrl.RightShift==true) KeyCode='&';
00102                     else  KeyCode='7';
00103                     break; 
00104                 case KEY_8:
00105                     if(KeyboardCtrl.LeftShift==true) KeyCode='*';
00106                     else if(KeyboardCtrl.RightShift==true) KeyCode='*';
00107                     else  KeyCode='8';
00108                     break; 
00109                 case KEY_9:
00110                     if(KeyboardCtrl.LeftShift==true) KeyCode='(';
00111                     else if(KeyboardCtrl.RightShift==true) KeyCode='(';
00112                     else  KeyCode='9';
00113                     break; 
00114                 case KEY_a: 
00115                     if(KeyboardCtrl.CapsLock==true) KeyCode='A';
00116                     else if(KeyboardCtrl.LeftShift==true) KeyCode='A';
00117                     else if(KeyboardCtrl.RightShift==true) KeyCode='A';
00118                     else  KeyCode='a';
00119                     break;
00120                 case KEY_b: 
00121                     if(KeyboardCtrl.CapsLock==true) KeyCode='B';
00122                     else if(KeyboardCtrl.LeftShift==true) KeyCode='B';
00123                     else if(KeyboardCtrl.RightShift==true) KeyCode='B';
00124                     else  KeyCode='b';
00125                     break;
00126                 case KEY_c: 
00127                     if(KeyboardCtrl.CapsLock==true) KeyCode='C';
00128                     else if(KeyboardCtrl.LeftShift==true) KeyCode='C';
00129                     else if(KeyboardCtrl.RightShift==true) KeyCode='C';
00130                     else  KeyCode='c';
00131                     break;
00132                 case KEY_d: 
00133                     if(KeyboardCtrl.CapsLock==true) KeyCode='D';
00134                     else if(KeyboardCtrl.LeftShift==true) KeyCode='D';
00135                     else if(KeyboardCtrl.RightShift==true) KeyCode='D';
00136                     else  KeyCode='d';
00137                     break;
00138                 case KEY_e: 
00139                     if(KeyboardCtrl.CapsLock==true) KeyCode='E';
00140                     else if(KeyboardCtrl.LeftShift==true) KeyCode='E';
00141                     else if(KeyboardCtrl.RightShift==true) KeyCode='E';
00142                     else  KeyCode='e';
00143                     break;
00144                 case KEY_f: 
00145                     if(KeyboardCtrl.CapsLock==true) KeyCode='F';
00146                     else if(KeyboardCtrl.LeftShift==true) KeyCode='F';
00147                     else if(KeyboardCtrl.RightShift==true) KeyCode='F';
00148                     else  KeyCode='f';
00149                     break;
00150                 case KEY_g: 
00151                     if(KeyboardCtrl.CapsLock==true) KeyCode='G';
00152                     else if(KeyboardCtrl.LeftShift==true) KeyCode='G';
00153                     else if(KeyboardCtrl.RightShift==true) KeyCode='G';
00154                     else  KeyCode='g';
00155                     break;
00156                 case KEY_h: 
00157                     if(KeyboardCtrl.CapsLock==true) KeyCode='H';
00158                     else if(KeyboardCtrl.LeftShift==true) KeyCode='H';
00159                     else if(KeyboardCtrl.RightShift==true) KeyCode='H';
00160                     else  KeyCode='h';
00161                     break;
00162                 case KEY_i: 
00163                     if(KeyboardCtrl.CapsLock==true) KeyCode='I';
00164                     else if(KeyboardCtrl.LeftShift==true) KeyCode='I';
00165                     else if(KeyboardCtrl.RightShift==true) KeyCode='I';
00166                     else  KeyCode='i';
00167                     break;
00168                 case KEY_j: 
00169                     if(KeyboardCtrl.CapsLock==true) KeyCode='J';
00170                     else if(KeyboardCtrl.LeftShift==true) KeyCode='J';
00171                     else if(KeyboardCtrl.RightShift==true) KeyCode='J';
00172                     else  KeyCode='j';
00173                     break;
00174                 case KEY_k: 
00175                     if(KeyboardCtrl.CapsLock==true) KeyCode='K';
00176                     else if(KeyboardCtrl.LeftShift==true) KeyCode='K';
00177                     else if(KeyboardCtrl.RightShift==true) KeyCode='K';
00178                     else  KeyCode='k';
00179                     break;
00180                 case KEY_l: 
00181                     if(KeyboardCtrl.CapsLock==true) KeyCode='L';
00182                     else if(KeyboardCtrl.LeftShift==true) KeyCode='L';
00183                     else if(KeyboardCtrl.RightShift==true) KeyCode='L';
00184                     else  KeyCode='l';
00185                     break;
00186                 case KEY_m: 
00187                     if(KeyboardCtrl.CapsLock==true) KeyCode='M';
00188                     else if(KeyboardCtrl.LeftShift==true) KeyCode='M';
00189                     else if(KeyboardCtrl.RightShift==true) KeyCode='M';
00190                     else  KeyCode='m';
00191                     break;
00192                 case KEY_n: 
00193                     if(KeyboardCtrl.CapsLock==true) KeyCode='N';
00194                     else if(KeyboardCtrl.LeftShift==true) KeyCode='N';
00195                     else if(KeyboardCtrl.RightShift==true) KeyCode='N';
00196                     else  KeyCode='n';
00197                     break;
00198                 case KEY_o: 
00199                     if(KeyboardCtrl.CapsLock==true) KeyCode='O';
00200                     else if(KeyboardCtrl.LeftShift==true) KeyCode='O';
00201                     else if(KeyboardCtrl.RightShift==true) KeyCode='O';
00202                     else  KeyCode='o';
00203                     break;
00204                 case KEY_p: 
00205                     if(KeyboardCtrl.CapsLock==true) KeyCode='P';
00206                     else if(KeyboardCtrl.LeftShift==true) KeyCode='P';
00207                     else if(KeyboardCtrl.RightShift==true) KeyCode='P';
00208                     else  KeyCode='p';
00209                     break;
00210                 case KEY_q: 
00211                     if(KeyboardCtrl.CapsLock==true) KeyCode='Q';
00212                     else if(KeyboardCtrl.LeftShift==true) KeyCode='Q';
00213                     else if(KeyboardCtrl.RightShift==true) KeyCode='Q';
00214                     else  KeyCode='q';
00215                     break;
00216                 case KEY_r: 
00217                     if(KeyboardCtrl.CapsLock==true) KeyCode='R';
00218                     else if(KeyboardCtrl.LeftShift==true) KeyCode='R';
00219                     else if(KeyboardCtrl.RightShift==true) KeyCode='R';
00220                     else  KeyCode='r';
00221                     break;
00222                 case KEY_s: 
00223                     if(KeyboardCtrl.CapsLock==true) KeyCode='S';
00224                     else if(KeyboardCtrl.LeftShift==true) KeyCode='S';
00225                     else if(KeyboardCtrl.RightShift==true) KeyCode='S';
00226                     else  KeyCode='s';
00227                     break;
00228                 case KEY_t: 
00229                     if(KeyboardCtrl.CapsLock==true) KeyCode='T';
00230                     else if(KeyboardCtrl.LeftShift==true) KeyCode='T';
00231                     else if(KeyboardCtrl.RightShift==true) KeyCode='T';
00232                     else  KeyCode='t';
00233                     break;
00234                 case KEY_u: 
00235                     if(KeyboardCtrl.CapsLock==true) KeyCode='U';
00236                     else if(KeyboardCtrl.LeftShift==true) KeyCode='U';
00237                     else if(KeyboardCtrl.RightShift==true) KeyCode='U';
00238                     else  KeyCode='u';
00239                     break;
00240                 case KEY_v: 
00241                     if(KeyboardCtrl.CapsLock==true) KeyCode='V';
00242                     else if(KeyboardCtrl.LeftShift==true) KeyCode='V';
00243                     else if(KeyboardCtrl.RightShift==true) KeyCode='V';
00244                     else  KeyCode='v';
00245                     break;
00246                 case KEY_w: 
00247                     if(KeyboardCtrl.CapsLock==true) KeyCode='W';
00248                     else if(KeyboardCtrl.LeftShift==true) KeyCode='W';
00249                     else if(KeyboardCtrl.RightShift==true) KeyCode='W';
00250                     else  KeyCode='w';
00251                     break;
00252                 case KEY_x: 
00253                     if(KeyboardCtrl.CapsLock==true) KeyCode='X';
00254                     else if(KeyboardCtrl.LeftShift==true) KeyCode='X';
00255                     else if(KeyboardCtrl.RightShift==true) KeyCode='X';
00256                     else  KeyCode='x';
00257                     break;
00258                 case KEY_y: 
00259                     if(KeyboardCtrl.CapsLock==true) KeyCode='Y';
00260                     else if(KeyboardCtrl.LeftShift==true) KeyCode='Y';
00261                     else if(KeyboardCtrl.RightShift==true) KeyCode='Y';
00262                     else  KeyCode='y';
00263                     break;
00264                 case KEY_z: 
00265                     if(KeyboardCtrl.CapsLock==true) KeyCode='Z';
00266                     else if(KeyboardCtrl.LeftShift==true) KeyCode='Z';
00267                     else if(KeyboardCtrl.RightShift==true) KeyCode='Z';
00268                     else  KeyCode='z';
00269                     break;
00270                 case KEY_MINUS:
00271                     if(KeyboardCtrl.LeftShift==true) KeyCode='_';
00272                     else if(KeyboardCtrl.RightShift==true) KeyCode='_';
00273                     else  KeyCode='-'; 
00274                     break;
00275                 case KEY_EQUAL:
00276                     if(KeyboardCtrl.LeftShift==true) KeyCode='+';
00277                     else if(KeyboardCtrl.RightShift==true) KeyCode='+';
00278                     else  KeyCode='='; 
00279                     break;
00280                 case KEY_UL2DR_SLASH:
00281                     if(KeyboardCtrl.LeftShift==true) KeyCode='|';
00282                     else if(KeyboardCtrl.RightShift==true) KeyCode='|';
00283                     else  KeyCode='\\'; 
00284                     break;
00285                 case KEY_DIVIDE:
00286                     if(KeyboardCtrl.LeftShift==true) KeyCode='?';
00287                     else if(KeyboardCtrl.RightShift==true) KeyCode='?';
00288                     else  KeyCode='/'; 
00289                     break;
00290                 case KEY_DOT:
00291                     if(KeyboardCtrl.LeftShift==true) KeyCode='>';
00292                     else if(KeyboardCtrl.RightShift==true) KeyCode='>';
00293                     else  KeyCode='.'; 
00294                     break;
00295                 case KEY_UPPER_DOT:
00296                     if(KeyboardCtrl.LeftShift==true) KeyCode='"';
00297                     else if(KeyboardCtrl.RightShift==true) KeyCode='"';
00298                     else  KeyCode='\''; 
00299                     break;
00300                 case KEY_COMMA:
00301                     if(KeyboardCtrl.LeftShift==true) KeyCode='<';
00302                     else if(KeyboardCtrl.RightShift==true) KeyCode='<';
00303                     else  KeyCode=','; 
00304                     break;
00305                 case KEY_UPPER_COMMA:
00306                     if(KeyboardCtrl.LeftShift==true) KeyCode='~';
00307                     else if(KeyboardCtrl.RightShift==true) KeyCode='~';
00308                     else  KeyCode='`'; 
00309                     break;
00310                 case KEY_SEMICOLON:
00311                     if(KeyboardCtrl.LeftShift==true) KeyCode=':';
00312                     else if(KeyboardCtrl.RightShift==true) KeyCode=':';
00313                     else  KeyCode=';'; 
00314                     break;
00315                 case KEY_LEFT_BRACKET:
00316                     if(KeyboardCtrl.LeftShift==true) KeyCode='{';
00317                     else if(KeyboardCtrl.RightShift==true) KeyCode='{';
00318                     else  KeyCode='['; 
00319                     break;
00320                 case KEY_RIGHT_BRACKET:
00321                     if(KeyboardCtrl.LeftShift==true) KeyCode='}';
00322                     else if(KeyboardCtrl.RightShift==true) KeyCode='}';
00323                     else  KeyCode=']'; 
00324                     break;
00325                 case KEY_F1:  KeyCode=0x80; break;
00326                 case KEY_F2:  KeyCode=0x81; break;
00327                 case KEY_F3:  KeyCode=0x82; break;
00328                 case KEY_F4:  KeyCode=0x83; break;
00329                 case KEY_F5:  KeyCode=0x84; break;
00330                 case KEY_F6:  KeyCode=0x85; break;
00331                 case KEY_F7:  KeyCode=0x86; break;
00332                 case KEY_F8:  KeyCode=0x87; break;
00333                 case KEY_F9:  KeyCode=0x88; break;
00334                 case KEY_F10: KeyCode=0x89; break;
00335                 case KEY_F11: KeyCode=0x8a; break;
00336                 case KEY_F12: KeyCode=0x8b; break;
00337                 case KEY_ESC: KeyCode=0x1b; break;
00338                 case KEY_NUMLOCK:
00339                     if(KeyStatus==KEY_PRESS){
00340                         if(KeyboardCtrl.NumLock==true) KeyboardCtrl.NumLock=false;
00341                         else KeyboardCtrl.NumLock=true;
00342                         KeyboardCtrl.LedChange=true;
00343                     }   
00344                     KeyCode=0xa3; 
00345                     break;
00346                 case KEY_SCROLL_LOCK:
00347                     if(KeyStatus==KEY_PRESS){
00348                         if(KeyboardCtrl.ScrollLock==true) KeyboardCtrl.ScrollLock=false;
00349                         else KeyboardCtrl.ScrollLock=true;
00350                         KeyboardCtrl.LedChange=true;
00351                     }   
00352                     KeyCode=0x8d; 
00353                     break;
00354                 case KEY_SHIFT_RIGHT:
00355                     if(KeyStatus==KEY_RELEASE) KeyboardCtrl.RightShift=false;
00356                     else KeyboardCtrl.RightShift=true;
00357                     KeyCode=0x91; 
00358                     break;
00359                 case KEY_SHIFT_LEFT:
00360                     if(KeyStatus==KEY_RELEASE) KeyboardCtrl.LeftShift=false;
00361                     else KeyboardCtrl.LeftShift=true;
00362                     KeyCode=0x90; 
00363                     break;
00364                 case KEY_ALT_LEFT:
00365                     if(KeyStatus==KEY_RELEASE) KeyboardCtrl.LeftAlt=false;
00366                     else KeyboardCtrl.LeftAlt=true;
00367                     KeyCode=0x96;
00368                     break;
00369                 case KEY_CAPSLOCK:
00370                     if(KeyStatus==KEY_PRESS){
00371                         if(KeyboardCtrl.CapsLock==true) KeyboardCtrl.CapsLock=false;
00372                         else KeyboardCtrl.CapsLock=true;
00373                         KeyboardCtrl.LedChange=true;
00374                     }   
00375                     KeyCode=0x9e; 
00376                     break;
00377                 case KEY_TAB:
00378                     KeyCode=0x8f; 
00379                     break;
00380                 case KEY_CTRL_LEFT:
00381                     if(KeyStatus==KEY_RELEASE) KeyboardCtrl.LeftCtrl=false;
00382                     else KeyboardCtrl.LeftCtrl=true;
00383                     KeyCode=0x92; 
00384                     break;
00385                 case KEY_ENTER:      KeyCode=0x0d; break;
00386                 case KEY_BACKSPACE:  KeyCode=0x08; break;
00387                 case KEY_SPACE:      KeyCode=0x20; break;       
00388                 case KEY_NUMPAD_0: 
00389                     if(KeyboardCtrl.NumLock==true) KeyCode='0';
00390                     else KeyCode=KB_SPECIAL_INS;
00391                     break;
00392                 case KEY_NUMPAD_1:
00393                     if(KeyboardCtrl.NumLock==true) KeyCode='1';
00394                     else KeyCode=KB_SPECIAL_END_KEY;
00395                     break;
00396                 case KEY_NUMPAD_2:
00397                     if(KeyboardCtrl.NumLock==true) KeyCode='2';
00398                     else KeyCode=KB_SPECIAL_DOWN_ARROW_KEY;
00399                     break;
00400                 case KEY_NUMPAD_3:
00401                     if(KeyboardCtrl.NumLock==true) KeyCode='3';
00402                     else KeyCode=KB_SPECIAL_PAGE_DOWN_KEY;
00403                     break;
00404                 case KEY_NUMPAD_4:
00405                     if(KeyboardCtrl.NumLock==true) KeyCode='4';
00406                     else KeyCode=KB_SPECIAL_LEFT_ARROW_KEY;
00407                     break;
00408                 case KEY_NUMPAD_5:
00409                     if(KeyboardCtrl.NumLock==true) KeyCode='5';
00410                     else KeyCode='5';
00411                     break;
00412                 case KEY_NUMPAD_6:
00413                     if(KeyboardCtrl.NumLock==true) KeyCode='6';
00414                     else KeyCode=KB_SPECIAL_RIGHT_ARROW_KEY;
00415                     break;
00416                 case KEY_NUMPAD_7:
00417                     if(KeyboardCtrl.NumLock==true) KeyCode='7';
00418                     else KeyCode=KB_SPECIAL_HOME_KEY ;
00419                     break;
00420                 case KEY_NUMPAD_8:
00421                     if(KeyboardCtrl.NumLock==true) KeyCode='8';
00422                     else KeyCode=KB_SPECIAL_UP_ARROW_KEY;
00423                     break;
00424                 case KEY_NUMPAD_9:
00425                     if(KeyboardCtrl.NumLock==true) KeyCode='9';
00426                     else KeyCode=KB_SPECIAL_PAGE_UP_KEY;
00427                     break;
00428                 case KEY_NUMPAD_DOT:
00429                     if(KeyboardCtrl.NumLock==true) KeyCode='.';
00430                     else KeyCode=ASCII_DEL;
00431                     break;
00432                 case KEY_NUMPAD_STAR:
00433                     if(KeyboardCtrl.NumLock==true) KeyCode='*';
00434                     else KeyCode='*';
00435                     break;
00436                 case KEY_NUMPAD_MINUS:
00437                     if(KeyboardCtrl.NumLock==true) KeyCode='-';
00438                     else KeyCode='-';
00439                     break;
00440                 case KEY_NUMPAD_PLUS:
00441                     if(KeyboardCtrl.NumLock==true) KeyCode='+';
00442                     else KeyCode='+';
00443                     break;
00444                 default:             
00445                     KeyCode=0x00; 
00446                     break; //null key
00447             }
00448             if(KeyStatus==KEY_RELEASE) KeyCode=0x00;
00449             if(KeyboardKeyBufferCheckIsr()!=BUFFER_FULL){
00450                 if(KeyCode!=0x00) KeyboardKeyBufferPutIsr(KeyCode);
00451             }
00452             break;
00453         case EXTENDCODE_STATE:
00454             KeyStatus=ScanCode&0x80;
00455             ScanCode=ScanCode&0x7f;
00456             switch(ScanCode){
00457                 case KEY_PRTSC:     KeyCode=0x8c; break;
00458                 case KEY_HOME:      KeyCode=0x9a; break;
00459                 case KEY_END:       KeyCode=0x9c; break;
00460                 case KEY_PAGEUP:    KeyCode=0x9d; break;
00461                 case KEY_PAGEDOWN:  KeyCode=0x9b; break;
00462                 case KEY_ARROWUP:   KeyCode=0x9f; break;
00463                 case KEY_ARROWDOWN: KeyCode=0xa1; break;
00464                 case KEY_ARROWLEFT: KeyCode=0xa0; break;
00465                 case KEY_ARRORRIGHT:KeyCode=0xa2; break;
00466                 case KEY_DEL:       KeyCode=0x7f; break;
00467                 case KEY_INS:       KeyCode=0xa5; break;
00468                 case KEY_ALT_RIGHT:
00469                     if(KeyStatus==KEY_RELEASE) KeyboardCtrl.RightAlt=false;
00470                     else KeyboardCtrl.RightAlt=true;
00471                     KeyCode=0x97; 
00472                     break;
00473                 case KEY_CTRL_RIGHT:
00474                     if(KeyStatus==KEY_RELEASE) KeyboardCtrl.RightCtrl=false;
00475                     else KeyboardCtrl.RightCtrl=true;
00476                     KeyCode=0x93; 
00477                     break;
00478                 case KEY_WINDOWS_MENU: KeyCode=0x98; break;
00479                 case KEY_WINDOWS_START:KeyCode=0x94; break;
00480                 case KEY_NUMPAD_DIVIDE:KeyCode='/'; break;
00481                 case KEY_NUMPAD_ENTER: KeyCode=0x0d; break;
00482                 default: KeyCode=0x00; break; //for skip key
00483             }
00484             if(KeyStatus==KEY_RELEASE) KeyCode=0x00;
00485             if(KeyboardKeyBufferCheckIsr()!=BUFFER_FULL){
00486                 if(KeyCode!=0x00) KeyboardKeyBufferPutIsr(KeyCode);
00487             }
00488             KeyboardCtrl.State=GENERALCODE_STATE;
00489             break;
00490         case EXTENDCODE2_1STCODE_STATE:
00491             TheKeyCode=(U16)ScanCode;
00492             TheKeyCode=TheKeyCode<<8;
00493             KeyboardCtrl.State=EXTENDCODE2_2NDCODE_STATE;
00494             break;
00495         case EXTENDCODE2_2NDCODE_STATE:
00496             TheKeyCode=TheKeyCode+ScanCode;
00497             if(TheKeyCode==0x1d45) KeyCode=0x8e;
00498             else if(TheKeyCode==0x9dc5)  KeyCode=0x00; //release value of pause key
00499             else KeyCode=0x00;
00500             if(KeyboardKeyBufferCheckIsr()!=BUFFER_FULL){
00501                 if(KeyCode!=0x00) KeyboardKeyBufferPutIsr(KeyCode);
00502             }
00503             KeyboardCtrl.State=GENERALCODE_STATE;
00504             break;
00505     }
00506 }

void KeyboardInit ( void   ) 

U8 KeyboardKeyBufferCheck ( void   ) 

Definition at line 522 of file keyboard.c.

00522                                {
00523     if(KeyboardCtrl.KeyBuffer.Put!=KeyboardCtrl.KeyBuffer.Get){
00524         if(KeyboardCtrl.KeyBuffer.Put==(KEYBOARD_KEYBUFFER_SZIE-1)){
00525             if(KeyboardCtrl.KeyBuffer.Get==0) return BUFFER_FULL;
00526             else return BUFFER_NOT_EMPTY;
00527         }
00528         else{
00529             if((KeyboardCtrl.KeyBuffer.Put+1)==KeyboardCtrl.KeyBuffer.Get) return BUFFER_FULL;
00530             else return BUFFER_NOT_EMPTY;
00531         }
00532     }
00533     else return BUFFER_EMPTY;
00534 }

U8 KeyboardKeyBufferCheckIsr ( void   ) 

Definition at line 508 of file keyboard.c.

00508                                   {
00509     if(KeyboardCtrl.KeyBuffer.Put!=KeyboardCtrl.KeyBuffer.Get){
00510         if(KeyboardCtrl.KeyBuffer.Put==(KEYBOARD_KEYBUFFER_SZIE-1)){
00511             if(KeyboardCtrl.KeyBuffer.Get==0) return BUFFER_FULL;
00512             else return BUFFER_NOT_EMPTY;
00513         }
00514         else{
00515             if((KeyboardCtrl.KeyBuffer.Put+1)==KeyboardCtrl.KeyBuffer.Get) return BUFFER_FULL;
00516             else return BUFFER_NOT_EMPTY;
00517         }
00518     }
00519     else return BUFFER_EMPTY;
00520 }

U8 KeyboardKeyBufferGet ( void   ) 

Definition at line 548 of file keyboard.c.

00548                              {
00549     U8 Data;
00550 
00551     if(KeyboardKeyBufferCheck()==BUFFER_EMPTY) return 0;
00552     if(KeyboardCtrl.KeyBuffer.Get==(KEYBOARD_KEYBUFFER_SZIE-1)){
00553         Data=KeyboardCtrl.KeyBuffer.Data[KeyboardCtrl.KeyBuffer.Get];
00554         KeyboardCtrl.KeyBuffer.Get=0;
00555     }
00556     else{
00557         Data=KeyboardCtrl.KeyBuffer.Data[KeyboardCtrl.KeyBuffer.Get];
00558         KeyboardCtrl.KeyBuffer.Get++;
00559     }
00560     return Data;
00561 }

void KeyboardKeyBufferPutIsr ( U8  Data  ) 

Definition at line 536 of file keyboard.c.

void KeyboardSetLed ( void   ) 


Variable Documentation

Definition at line 14 of file keyboard.c.

const U8 KeyboardName[] = "KEYBOARD"

Definition at line 12 of file keyboard.c.

Definition at line 13 of file keyboard.c.


Generated on Sat Apr 10 23:28:07 2010 for 80X86 MULTI-TASKING OPERATION SYSTEM by  doxygen 1.5.9