Browse code

Trying to fix the ctrl+char issue

neauoire authored on 25/06/2021 16:21:11
Showing 1 changed files
... ...
@@ -189,11 +189,7 @@ doctrl(Uxn *u, SDL_Event *event, int z)
189 189
 	Uint8 flag = 0x00;
190 190
 	SDL_Keymod mods = SDL_GetModState();
191 191
 	devctrl->dat[2] &= 0xf8;
192
-	if(mods & KMOD_CTRL) {
193
-		devctrl->dat[2] |= 0x01;
194
-		if(z && event->key.keysym.sym >= SDLK_a && event->key.keysym.sym <= SDLK_z)
195
-			devctrl->dat[3] = event->key.keysym.sym & 0x1f;
196
-	}
192
+	if(mods & KMOD_CTRL) devctrl->dat[2] |= 0x01;
197 193
 	if(mods & KMOD_ALT) devctrl->dat[2] |= 0x02;
198 194
 	if(mods & KMOD_SHIFT) devctrl->dat[2] |= 0x04;
199 195
 	/* clang-format off */
... ...
@@ -207,11 +203,14 @@ doctrl(Uxn *u, SDL_Event *event, int z)
207 203
 	case SDLK_F2: if(z) toggledebug(u); break;
208 204
 	case SDLK_F3: if(z) screencapture(); break;
209 205
 	}
206
+
210 207
 	/* clang-format on */
211 208
 	if(z) {
212 209
 		devctrl->dat[2] |= flag;
213 210
 		if(event->key.keysym.sym < 0x20 || event->key.keysym.sym == SDLK_DELETE)
214 211
 			devctrl->dat[3] = event->key.keysym.sym;
212
+		else if((mods & KMOD_CTRL) && event->key.keysym.sym >= SDLK_a && event->key.keysym.sym <= SDLK_z)
213
+			devctrl->dat[3] = event->key.keysym.sym - (mods & KMOD_SHIFT) * 0x20;
215 214
 	} else
216 215
 		devctrl->dat[2] &= ~flag;
217 216
 }