Subversion Repositories HelenOS

Rev

Rev 4061 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4061 Rev 4462
Line 34... Line 34...
34
 * @file
34
 * @file
35
 * @brief   Sun keyboard controller driver.
35
 * @brief   Sun keyboard controller driver.
36
 */
36
 */
37
 
37
 
38
#include <kbd.h>
38
#include <kbd.h>
39
#include <kbd/kbd.h>
39
#include <io/console.h>
40
#include <kbd/keycode.h>
40
#include <io/keycode.h>
41
#include <kbd_ctl.h>
41
#include <kbd_ctl.h>
42
 
42
 
43
#define KBD_KEY_RELEASE     0x80
43
#define KBD_KEY_RELEASE     0x80
44
#define KBD_ALL_KEYS_UP     0x7f
44
#define KBD_ALL_KEYS_UP     0x7f
45
 
45
 
Line 50... Line 50...
50
    return 0;
50
    return 0;
51
}
51
}
52
 
52
 
53
void kbd_ctl_parse_scancode(int scancode)
53
void kbd_ctl_parse_scancode(int scancode)
54
{
54
{
55
    kbd_ev_type_t type;
55
    console_ev_type_t type;
56
    unsigned int key;
56
    unsigned int key;
57
 
57
 
58
    if (scancode < 0 || scancode >= 0x100)
58
    if (scancode < 0 || scancode >= 0x100)
59
        return;
59
        return;
60
 
60
 
61
    if (scancode == KBD_ALL_KEYS_UP)
61
    if (scancode == KBD_ALL_KEYS_UP)
62
        return;
62
        return;
63
 
63
 
64
    if (scancode & KBD_KEY_RELEASE) {
64
    if (scancode & KBD_KEY_RELEASE) {
65
        scancode &= ~KBD_KEY_RELEASE;
65
        scancode &= ~KBD_KEY_RELEASE;
66
        type = KE_RELEASE;
66
        type = KEY_RELEASE;
67
    } else {
67
    } else {
68
        type = KE_PRESS;
68
        type = KEY_PRESS;
69
    }
69
    }
70
 
70
 
71
    key = scanmap_simple[scancode];
71
    key = scanmap_simple[scancode];
72
    if (key != 0)
72
    if (key != 0)
73
        kbd_push_ev(type, key);
73
        kbd_push_ev(type, key);