Changes in kernel/genarch/src/kbrd/kbrd.c [63e27ef:a35b458] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/genarch/src/kbrd/kbrd.c
r63e27ef ra35b458 78 78 { 79 79 spinlock_lock(&instance->keylock); 80 80 81 81 switch (sc) { 82 82 case SC_LSHIFT: … … 94 94 break; 95 95 } 96 96 97 97 spinlock_unlock(&instance->keylock); 98 98 } … … 108 108 bool capslock; 109 109 wchar_t ch; 110 110 111 111 spinlock_lock(&instance->keylock); 112 112 113 113 switch (sc) { 114 114 case SC_LSHIFT: … … 126 126 capslock = (instance->keyflags & PRESSED_CAPSLOCK) || 127 127 (instance->lockflags & LOCKED_CAPSLOCK); 128 128 129 129 if ((letter) && (capslock)) 130 130 shift = !shift; 131 131 132 132 if (shift) 133 133 ch = sc_secondary_map[sc]; 134 134 else 135 135 ch = sc_primary_map[sc]; 136 136 137 137 switch (ch) { 138 138 case U_PAGE_UP: … … 145 145 indev_push_character(instance->sink, ch); 146 146 } 147 148 break; 149 } 150 147 148 break; 149 } 150 151 151 spinlock_unlock(&instance->keylock); 152 152 } … … 155 155 { 156 156 kbrd_instance_t *instance = (kbrd_instance_t *) arg; 157 157 158 158 while (true) { 159 159 wchar_t sc = indev_pop_character(&instance->raw); 160 160 161 161 if (sc == IGNORE_CODE) 162 162 continue; 163 163 164 164 if (sc & KEY_RELEASE) 165 165 key_released(instance, (sc ^ KEY_RELEASE) & 0x7f); … … 176 176 instance->thread = thread_create(kkbrd, (void *) instance, 177 177 TASK, THREAD_FLAG_NONE, "kkbrd"); 178 178 179 179 if (!instance->thread) { 180 180 free(instance); 181 181 return NULL; 182 182 } 183 183 184 184 instance->sink = NULL; 185 185 indev_initialize("kbrd", &instance->raw, &kbrd_raw_ops); 186 186 187 187 spinlock_initialize(&instance->keylock, "kbrd.instance.keylock"); 188 188 instance->keyflags = 0; 189 189 instance->lockflags = 0; 190 190 } 191 191 192 192 return instance; 193 193 } … … 197 197 assert(instance); 198 198 assert(sink); 199 199 200 200 instance->sink = sink; 201 201 thread_ready(instance->thread); 202 202 203 203 return &instance->raw; 204 204 }
Note:
See TracChangeset
for help on using the changeset viewer.