Skip to content
Snippets Groups Projects
Select Git revision
  • c900cb966673c2fdaef8a3d1ed8184726e2d97f1
  • master default protected
  • sem_ping_pong
  • demo_sched
4 results

keyboard.c

Blame
  • Forked from Gilles Grimaud / my-kernel
    Source project has a limited visibility.
    keyboard.c 2.26 KiB
    #include "keyboard.h"
    
    void init_keymapping()
    {
        int i;
        for (int i = 0; i < NB_KEYS; i++)
            KEY_MAPPING[i] = (key_t){0, 0};
    
        shift_pressed = FALSE;
    
        // alphabetics letters and space
        KEY_MAPPING[0x1E] = (key_t){'a', 'A'};
        KEY_MAPPING[0x30] = (key_t){'b', 'B'};
        KEY_MAPPING[0x2E] = (key_t){'c', 'C'};
        KEY_MAPPING[0x20] = (key_t){'d', 'D'};
        KEY_MAPPING[0x12] = (key_t){'e', 'E'};
        KEY_MAPPING[0x21] = (key_t){'f', 'F'};
        KEY_MAPPING[0x22] = (key_t){'g', 'G'};
        KEY_MAPPING[0x23] = (key_t){'h', 'H'};
        KEY_MAPPING[0x17] = (key_t){'i', 'I'};
        KEY_MAPPING[0x24] = (key_t){'j', 'J'};
        KEY_MAPPING[0x25] = (key_t){'k', 'K'};
        KEY_MAPPING[0x26] = (key_t){'l', 'L'};
        KEY_MAPPING[0x32] = (key_t){'m', 'M'};
        KEY_MAPPING[0x31] = (key_t){'n', 'N'};
        KEY_MAPPING[0x18] = (key_t){'o', 'O'};
        KEY_MAPPING[0x19] = (key_t){'p', 'P'};
        KEY_MAPPING[0x10] = (key_t){'q', 'Q'};
        KEY_MAPPING[0x13] = (key_t){'r', 'R'};
        KEY_MAPPING[0x1F] = (key_t){'s', 'S'};
        KEY_MAPPING[0x14] = (key_t){'t', 'T'};
        KEY_MAPPING[0x16] = (key_t){'u', 'U'};
        KEY_MAPPING[0x2F] = (key_t){'v', 'V'};
        KEY_MAPPING[0x11] = (key_t){'w', 'W'};
        KEY_MAPPING[0x2D] = (key_t){'x', 'X'};
        KEY_MAPPING[0x15] = (key_t){'y', 'Y'};
        KEY_MAPPING[0x2C] = (key_t){'z', 'Z'};
        KEY_MAPPING[0x39] = (key_t){' ', ' '};
    
        // Numeric row
        KEY_MAPPING[0x02] = (key_t){'1', '!'};
        KEY_MAPPING[0x03] = (key_t){'2', '@'};
        KEY_MAPPING[0x04] = (key_t){'3', '#'};
        KEY_MAPPING[0x05] = (key_t){'4', 0};
        KEY_MAPPING[0x06] = (key_t){'5', 0};
        KEY_MAPPING[0x07] = (key_t){'6', 0};
        KEY_MAPPING[0x08] = (key_t){'7', '&'};
        KEY_MAPPING[0x09] = (key_t){'8', 0};
        KEY_MAPPING[0x0A] = (key_t){'9', '('};
        KEY_MAPPING[0x0B] = (key_t){'0', ')'};
        KEY_MAPPING[0x0C] = (key_t){'-', '_'};
        KEY_MAPPING[0x28] = (key_t){'\'', '"'};
    
        // Addons
        KEY_MAPPING[0x1C] = (key_t){'\n', '\n'};
        KEY_MAPPING[0x0F] = (key_t){'\t', '\t'};
        KEY_MAPPING[0x0E] = (key_t){'\b', '\b'}; // del
    }
    
    char keyboard_map(unsigned char code)
    {
        if (code == SHIFT_UP)
            shift_pressed = TRUE;
        else if (code == SHIFT_DOWN)
            shift_pressed = FALSE;
    
        if (shift_pressed)
            return KEY_MAPPING[code].top;
        return KEY_MAPPING[code].bottom;
    }