Exemple #1
0
/* Updates the key descriptions from the ASCII values. */
static void update_key_descriptions(void)
{
   char str[64];
   int i;
   for (i = 0; i < KEY_MAX; i++)
   {
      int ascii = scancode_to_ascii (i);
      if (_pckeys_names[i])
            _AL_FREE(_pckeys_names[i]);
      if (ascii > ' ') {
         uszprintf(str, sizeof str, "%c", ascii);
         _pckeys_names[i] = strdup (str);
      }
      else {
         _pckeys_names[i] = strdup(_keyboard_common_names[i]);
      }
   }
}
Exemple #2
0
void isr_kbd_int(void) {
  u8 key = get_scancode();

  if (key & 0x80) {
    if (key == 170)
      shift_locked = 0;
  }
  else {
    if (key == 42) {
      shift_locked = 1;
    }
    else if (key == 58)
      shift_locked = !shift_locked;
    else {
      u8 c = scancode_to_ascii(key);
      if (c)
        putchar(c);
    }

  }
  send_eoi(1);
}
Exemple #3
0
 int getUnicodeFromScancode(KeyScancode scancode) override {
   if (isKeyPressed(scancode))
     return scancode_to_ascii(she_to_alleg_scancode(scancode));
   else
     return false;
 }
// Handle scancode
static void handle_scancode(char scancode_8) 
{
    //printk(KERN_INFO "Got scancode %02x in handle_scancode.\n", scancode_8);

    if (should_ignore(scancode_8))
        return;

    #ifdef DEBUG
    to_tty_string("[simple_keyboard.c] Handling scancode.\n\r");
    #endif

    // save last scancode
    keyboard_status.last_scancode = keyboard_status.current_scancode;

    // update press status
    keyboard_status.press = is_press(scancode_8);

    // update current scancode
    char scancode_7 = get_scancode_7(scancode_8);


    keyboard_status.current_scancode = scancode_7;

    // update control scancode
    if (scancode_7 == SCAN_CAP && keyboard_status.press) 
    {   
        #ifdef DEBUG
        to_tty_string("[simple_keyboard.c] CAPSLOCK.\n\r");
        #endif
        keyboard_status.caps = !keyboard_status.caps;
    }
        

    if (scancode_7 == SCAN_ALT_L || scancode_7 == SCAN_ALT_R)
    {   
        #ifdef DEBUG
        to_tty_string("[simple_keyboard.c] ALT.\n\r");
        #endif

        if (keyboard_status.press)
            keyboard_status.alt = true;
        else
            keyboard_status.alt = false;
        return;
    }

    if (scancode_7 == SCAN_CTRL_L || scancode_7 == SCAN_CTRL_R)
    {   
        #ifdef DEBUG
        to_tty_string("[simple_keyboard.c] CTLR.\n\r");
        #endif

        if (keyboard_status.press)
            keyboard_status.ctrl = true;
        else
            keyboard_status.ctrl = false;
        return;
    }

    if (scancode_7 == SCAN_SHIFT_L || scancode_7 == SCAN_SHIFT_R)
    {   
        #ifdef DEBUG
        to_tty_string("[simple_keyboard.c] SHIFT.\n\r");
        #endif

        if (keyboard_status.press)
            keyboard_status.shift = true;
        else
            keyboard_status.shift = false;
        return;
    }

    #ifdef DEBUG
    to_tty_string("[simple_keyboard.c] Normal Key.\n\r");
    #endif

    if (!keyboard_status.press)
        return;

    // update keycode
    keyboard_status.current_ascii = scancode_to_ascii(scancode_7, keyboard_status.shift);
    to_tty_char(keyboard_status.current_ascii);
}