Rev 588 | Rev 606 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 588 | Rev 601 | ||
---|---|---|---|
Line 301... | Line 301... | ||
301 | bool shift, capslock; |
301 | bool shift, capslock; |
302 | bool letter = false; |
302 | bool letter = false; |
303 | 303 | ||
304 | spinlock_lock(&keylock); |
304 | spinlock_lock(&keylock); |
305 | switch (sc) { |
305 | switch (sc) { |
306 | case SC_LSHIFT: |
306 | case SC_LSHIFT: |
307 | case SC_RSHIFT: |
307 | case SC_RSHIFT: |
308 | keyflags |= PRESSED_SHIFT; |
308 | keyflags |= PRESSED_SHIFT; |
309 | break; |
309 | break; |
310 | case SC_CAPSLOCK: |
310 | case SC_CAPSLOCK: |
311 | keyflags |= PRESSED_CAPSLOCK; |
311 | keyflags |= PRESSED_CAPSLOCK; |
312 | break; |
312 | break; |
- | 313 | case SC_SPEC_ESCAPE: |
|
- | 314 | break; |
|
- | 315 | case SC_LEFTARR: |
|
- | 316 | chardev_push_character(&kbrd, 0x1b); |
|
- | 317 | chardev_push_character(&kbrd, 0x5b); |
|
- | 318 | chardev_push_character(&kbrd, 0x44); |
|
- | 319 | break; |
|
- | 320 | case SC_RIGHTARR: |
|
- | 321 | chardev_push_character(&kbrd, 0x1b); |
|
- | 322 | chardev_push_character(&kbrd, 0x5b); |
|
- | 323 | chardev_push_character(&kbrd, 0x43); |
|
- | 324 | break; |
|
- | 325 | case SC_UPARR: |
|
- | 326 | chardev_push_character(&kbrd, 0x1b); |
|
- | 327 | chardev_push_character(&kbrd, 0x5b); |
|
- | 328 | chardev_push_character(&kbrd, 0x41); |
|
- | 329 | break; |
|
- | 330 | case SC_DOWNARR: |
|
- | 331 | chardev_push_character(&kbrd, 0x1b); |
|
- | 332 | chardev_push_character(&kbrd, 0x5b); |
|
- | 333 | chardev_push_character(&kbrd, 0x42); |
|
- | 334 | break; |
|
313 | default: |
335 | default: |
314 | letter = is_lower(ascii); |
336 | letter = is_lower(ascii); |
315 | capslock = (keyflags & PRESSED_CAPSLOCK) || (lockflags & LOCKED_CAPSLOCK); |
337 | capslock = (keyflags & PRESSED_CAPSLOCK) || (lockflags & LOCKED_CAPSLOCK); |
316 | shift = keyflags & PRESSED_SHIFT; |
338 | shift = keyflags & PRESSED_SHIFT; |
317 | if (letter && capslock) |
339 | if (letter && capslock) |
318 | shift = !shift; |
340 | shift = !shift; |