From 6582f2965ca20ff85dfab36cc77a80d3f302b329 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Deuc=D0=B5?= <shurd@sasktel.net>
Date: Sat, 29 Apr 2023 13:40:53 -0400
Subject: [PATCH] Don't treat numpad /*-+ differently based on NumLock in SDL

This caused double-keys on those when numlock was off.  Only the
number keys and period need special NumLock handling.

Fixes bug 108 on SourceForge, thanks nelgin!
---
 src/conio/sdl_con.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/conio/sdl_con.c b/src/conio/sdl_con.c
index 9309161d79..fc3791a009 100644
--- a/src/conio/sdl_con.c
+++ b/src/conio/sdl_con.c
@@ -960,12 +960,12 @@ void sdl_video_event_thread(void *data)
 					block_text = 1;
 				if (block_text || ev.key.keysym.sym < 0 || ev.key.keysym.sym > 127) {
 					// NUMLOCK makes 
-					if ((ev.key.keysym.mod & KMOD_NUM) && ((ev.key.keysym.sym >= SDLK_KP_1 && ev.key.keysym.sym <= SDLK_KP_0)
-					    || ev.key.keysym.sym == SDLK_KP_DIVIDE
+					if (ev.key.keysym.sym == SDLK_KP_DIVIDE
 					    || ev.key.keysym.sym == SDLK_KP_MULTIPLY
 					    || ev.key.keysym.sym == SDLK_KP_MINUS
-					    || ev.key.keysym.sym == SDLK_KP_PLUS
-					    || ev.key.keysym.sym == SDLK_KP_PERIOD))
+					    || ev.key.keysym.sym == SDLK_KP_PLUS)
+						break;
+					if ((ev.key.keysym.mod & KMOD_NUM) && ((ev.key.keysym.sym >= SDLK_KP_1 && ev.key.keysym.sym <= SDLK_KP_0) || (ev.key.keysym.sym == SDLK_KP_PERIOD)))
 						break;
 					sdl_add_key_uc(sdl_get_char_code(ev.key.keysym.sym, ev.key.keysym.mod), &cvstat);
 				}
-- 
GitLab