Subversion Repositories HelenOS

Rev

Rev 4629 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4629 Rev 4632
Line 89... Line 89...
89
 
89
 
90
/** Process keyboard & mouse events */
90
/** Process keyboard & mouse events */
91
int kbd_arch_process(keybuffer_t *keybuffer, ipc_call_t *call)
91
int kbd_arch_process(keybuffer_t *keybuffer, ipc_call_t *call)
92
{
92
{
93
    static int key_released_flag = 0;
93
    static int key_released_flag = 0;
94
    static uint8_t prev_char = 0xFF;
94
    static int caps_count = 0;
95
   
95
   
96
    int scan_code = IPC_GET_ARG1(*call);
96
    int scan_code = IPC_GET_ARG1(*call);
97
 
97
 
-
 
98
    if (scan_code == 0x58) {
-
 
99
        if (caps_count == 2) {
-
 
100
            caps_count = 0;
-
 
101
            return 1;
-
 
102
        } else if (key_released_flag && !caps_count) {
-
 
103
            key_released_flag = 0;
-
 
104
            return 1;
-
 
105
        }
-
 
106
        caps_count++;
-
 
107
    }
-
 
108
       
-
 
109
 
98
    if (scan_code == PL050_KEY_RELEASE) {
110
    if (scan_code == PL050_KEY_RELEASE) {
99
        key_released_flag = 1;
111
        key_released_flag = 1;
100
    } else {
112
    } else {
101
        if (key_released_flag && prev_char == scan_code) {
113
        if (key_released_flag) {
102
            prev_char = 0xFF;
-
 
103
            key_released(keybuffer, scan_code);
114
            key_released(keybuffer, scan_code);
104
        } else {
115
        } else {
105
            key_pressed(keybuffer, scan_code);
116
            key_pressed(keybuffer, scan_code);
106
            prev_char = scan_code;
-
 
107
        }
117
        }
108
        key_released_flag = 0;
118
        key_released_flag = 0;
109
    }
119
    }
110
 
120
 
111
    return  1;
121
    return  1;