Esempio n. 1
0
File: scrn.c Progetto: regina/jonix
/*  ----------------------------------------------------
 *  Function:       scrn_puts
 *
 *  Prints a string on the screen.
 *  --------------------------------------------------*/
void scrn_puts(char *str){

    unsigned char *stru  = (unsigned char *) str;
    while(*stru != 0){
        scrn_putc(*stru);
        stru++;
    }
}
Esempio n. 2
0
/*  ----------------------------------------------------
 *  Function:       kb_handler
 *  --------------------------------------------------*/
void kb_handler(void *r){

    unsigned char c  = kb_read();

    if(c & 0x80){
        /* key release */

        c &= 0x7F; /* get rid of the key release bit */

        /* Shift */ 
        if(c == 42 || c == 54){
            kb_flags    &= ~KBF_SHIFT;
        }
        /* CTL */
        else if(c == 29 || c == 128+29){
            kb_flags    &= ~KBF_CTL;
        }
        /* ALT */
        else if(c == 56 || c == 128+56){
            kb_flags    &= ~KBF_ALT;
/* TODO: separate Alt and AltGr 
 * */
        }
        /* CAPSLOCK */
        else if(c == 58){
            kb_flags    &= ~KBF_CAPS;
        }
        /* TODO: SUP (Logo Key) */
        
    }
    /* key press */

    /* Shift */ 
    else if(c == 42 || c == 54){
        kb_flags    |= KBF_SHIFT;
    }
    /* CTL */
    else if(c == 29 || c == 128+29){
        kb_flags    |= KBF_CTL;
    }
    /* ALT */
    else if(c == 56 || c == 128+56){
        kb_flags    |= KBF_ALT;
    }
    /* CAPSLOCK */
    else if(c == 58){
        kb_flags    |= KBF_CAPS;
    }
    /* TODO: SUP (Logo Key) */
    else{

        if(kb_flags & KBF_SHIFT){
            c   = kb_layout_sh[c];
        }
        else{
            c   = kb_layout[c];
        }

        unsigned char i;

        if(kb_print_to_screen){
            for( i=0 ; i<buffer_pos ; i++){
                scrn_putc(kb_buffer[i]);
                kb_buffer[i]    = 0;
            }
            buffer_pos  = 0;
            scrn_putc((char) c);
        }
        else{
           if(buffer_pos >= KB_BUFFER_SIZE){
               strcpy(kb_err, "Keyboard buffer full.");
           }
           else{
               kb_buffer[buffer_pos]    = (char) c;
               buffer_pos++;
           }
        }

    }

}