Changeset a35b458 in mainline for kernel/genarch/src/kbrd
- Timestamp:
- 2018-03-02T20:10:49Z (8 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f1380b7
- Parents:
- 3061bc1
- git-author:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-02-28 17:38:31)
- git-committer:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-03-02 20:10:49)
- Location:
- kernel/genarch/src/kbrd
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/genarch/src/kbrd/kbrd.c
r3061bc1 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 } -
kernel/genarch/src/kbrd/kbrd_at.c
r3061bc1 ra35b458 71 71 { 72 72 spinlock_lock(&instance->keylock); 73 73 74 74 switch (sc) { 75 75 case SC_LSHIFT: … … 87 87 break; 88 88 } 89 89 90 90 spinlock_unlock(&instance->keylock); 91 91 } … … 100 100 bool shift; 101 101 bool capslock; 102 102 103 103 spinlock_lock(&instance->keylock); 104 104 105 105 switch (sc) { 106 106 case SC_LSHIFT: … … 118 118 capslock = (instance->keyflags & PRESSED_CAPSLOCK) || 119 119 (instance->lockflags & LOCKED_CAPSLOCK); 120 120 121 121 if ((letter) && (capslock)) 122 122 shift = !shift; 123 123 124 124 if (shift) 125 125 indev_push_character(instance->sink, sc_secondary_map[sc]); … … 128 128 break; 129 129 } 130 130 131 131 spinlock_unlock(&instance->keylock); 132 132 } … … 137 137 static int is_locked = 0; 138 138 kbrd_instance_t *instance = (kbrd_instance_t *) arg; 139 139 140 140 while (true) { 141 141 wchar_t sc = indev_pop_character(&instance->raw); … … 162 162 } 163 163 } 164 164 165 165 } 166 166 } … … 174 174 instance->thread = thread_create(kkbrd, (void *) instance, TASK, 0, 175 175 "kkbrd"); 176 176 177 177 if (!instance->thread) { 178 178 free(instance); 179 179 return NULL; 180 180 } 181 181 182 182 instance->sink = NULL; 183 183 indev_initialize("kbrd", &instance->raw, &kbrd_raw_ops); 184 184 185 185 spinlock_initialize(&instance->keylock, "kbrd_at.instance.keylock"); 186 186 instance->keyflags = 0; 187 187 instance->lockflags = 0; 188 188 } 189 189 190 190 return instance; 191 191 } … … 195 195 assert(instance); 196 196 assert(sink); 197 197 198 198 instance->sink = sink; 199 199 thread_ready(instance->thread); 200 200 201 201 return &instance->raw; 202 202 } -
kernel/genarch/src/kbrd/scanc_pc.c
r3061bc1 ra35b458 158 158 U_SPECIAL, /* 0x45 - NumLock */ 159 159 U_SPECIAL, /* 0x46 - ScrollLock */ 160 160 161 161 U_HOME_ARROW, /* 0x47 - Home */ 162 162 U_UP_ARROW, /* 0x48 - Up Arrow */
Note:
See TracChangeset
for help on using the changeset viewer.
