Subversion Repositories HelenOS

Rev

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

Rev 3942 Rev 3943
Line 61... Line 61...
61
keybuffer_t keybuffer;
61
keybuffer_t keybuffer;
62
 
62
 
63
/** Currently active modifiers. */
63
/** Currently active modifiers. */
64
static unsigned mods = KM_NUM_LOCK;
64
static unsigned mods = KM_NUM_LOCK;
65
 
65
 
-
 
66
/** Currently pressed lock keys. We track these to tackle autorepeat. */
-
 
67
static unsigned lock_keys;
-
 
68
 
66
void kbd_push_scancode(int scancode)
69
void kbd_push_scancode(int scancode)
67
{
70
{
68
    printf("scancode: 0x%x\n", scancode);
71
    printf("scancode: 0x%x\n", scancode);
69
    kbd_ctl_parse_scancode(scancode);
72
    kbd_ctl_parse_scancode(scancode);
70
}
73
}
Line 96... Line 99...
96
    case KC_NUM_LOCK: mod_mask = KM_NUM_LOCK; break;
99
    case KC_NUM_LOCK: mod_mask = KM_NUM_LOCK; break;
97
    case KC_SCROLL_LOCK: mod_mask = KM_SCROLL_LOCK; break;
100
    case KC_SCROLL_LOCK: mod_mask = KM_SCROLL_LOCK; break;
98
    default: mod_mask = 0; break;
101
    default: mod_mask = 0; break;
99
    }
102
    }
100
 
103
 
-
 
104
    if (mod_mask != 0) {
101
    if (mod_mask != 0 && type == KE_PRESS)
105
        if (type == KE_PRESS) {
-
 
106
            /*
-
 
107
             * Only change lock state on transition from released
-
 
108
             * to pressed. This prevents autorepeat from messing
-
 
109
             * up the lock state.
-
 
110
             */
102
        mods = mods ^ mod_mask;
111
            mods = mods ^ (mod_mask & ~lock_keys);
-
 
112
            lock_keys = lock_keys | mod_mask;
-
 
113
        } else {
-
 
114
            lock_keys = lock_keys & ~mod_mask;
-
 
115
        }
-
 
116
    }
103
 
117
 
104
    printf("type: %d\n", type);
118
    printf("type: %d\n", type);
105
    printf("mods: 0x%x\n", mods);
119
    printf("mods: 0x%x\n", mods);
106
    printf("keycode: %u\n", key);
120
    printf("keycode: %u\n", key);
107
 
121