From 42a1fa755a6d56f81a6aaae0dfab623a385a5ea0 Mon Sep 17 00:00:00 2001
From: johns <>
Date: Mon, 22 Jan 2001 15:55:38 +0000
Subject: [PATCH] Keypad support added.

---
 src/video/svgalib.cpp | 84 ++++++++++++++++++++++++++++++++++++-------
 1 file changed, 71 insertions(+), 13 deletions(-)

diff --git a/src/video/svgalib.cpp b/src/video/svgalib.cpp
index e2ea098aa..143b740ec 100644
--- a/src/video/svgalib.cpp
+++ b/src/video/svgalib.cpp
@@ -9,11 +9,10 @@
 //	   FreeCraft - A free fantasy real time strategy game engine
 //
 /**@name svgalib.c	-	svgalib support. */
-/*
-**	(c) Copyright 1999-2000 by Jarek Sobieszek
-**
-**	$Id$
-*/
+//
+//	(c) Copyright 1999-2001 by Jarek Sobieszek
+//
+//	$Id$
 
 //@{
 
@@ -367,6 +366,7 @@ local void KeyboardEvent(int scancode, int press) {
     IfDebug( icode=0; );		// keeps the compiler happy
 
     if(press == KEY_EVENTPRESS) {
+	// FIXME: combine scancode -> internal keycode of press and release
 	switch(scancode) {
 	    case SCANCODE_1:
 		if(KeyModifiers & ModifierShift) {
@@ -546,19 +546,15 @@ local void KeyboardEvent(int scancode, int press) {
 		icode = '\t';
 		break;
 	    case SCANCODE_CURSORBLOCKUP:
-	    case SCANCODE_CURSORUP:
 		icode = KeyCodeUp;
 		break;
 	    case SCANCODE_CURSORBLOCKDOWN:
-	    case SCANCODE_CURSORDOWN:
 		icode = KeyCodeDown;
 		break;
 	    case SCANCODE_CURSORBLOCKLEFT:
-	    case SCANCODE_CURSORLEFT:
 		icode = KeyCodeLeft;
 		break;
 	    case SCANCODE_CURSORBLOCKRIGHT:
-	    case SCANCODE_CURSORRIGHT:
 		icode = KeyCodeRight;
 		break;
 	    case SCANCODE_F1:
@@ -597,7 +593,40 @@ local void KeyboardEvent(int scancode, int press) {
 	    case SCANCODE_F12:
 		icode = KeyCodeF12;
 		break;
+
+	    case SCANCODE_KEYPAD0:
+		icode = KeyCodeKP0;
+		break;
+	    case SCANCODE_KEYPAD1:
+		icode = KeyCodeKP1;
+		break;
+	    case SCANCODE_KEYPAD2:
+		icode = KeyCodeKP2;
+		break;
+	    case SCANCODE_KEYPAD3:
+		icode = KeyCodeKP3;
+		break;
+	    case SCANCODE_KEYPAD4:
+		icode = KeyCodeKP4;
+		break;
+	    case SCANCODE_KEYPAD5:
+		icode = KeyCodeKP5;
+		break;
+	    case SCANCODE_KEYPAD6:
+		icode = KeyCodeKP6;
+		break;
+	    case SCANCODE_KEYPAD7:
+		icode = KeyCodeKP7;
+		break;
+	    case SCANCODE_KEYPAD8:
+		icode = KeyCodeKP8;
+		break;
+	    case SCANCODE_KEYPAD9:
+		icode = KeyCodeKP9;
+		break;
+
 	    // KeyCodePause
+
 	    case SCANCODE_LEFTSHIFT:
 	    case SCANCODE_RIGHTSHIFT:
 		KeyModifiers |= ModifierShift;
@@ -621,6 +650,7 @@ local void KeyboardEvent(int scancode, int press) {
 	// FIXME: Should come first
 	DoButtonPanelKey(icode);
     } else if(press == KEY_EVENTRELEASE) {
+	// FIXME: combine scancode -> internal keycode of press and release
 	switch(scancode) {
 	    case SCANCODE_1:
 		if(KeyModifiers & ModifierShift) {
@@ -800,19 +830,15 @@ local void KeyboardEvent(int scancode, int press) {
 		icode = '\t';
 		break;
 	    case SCANCODE_CURSORBLOCKUP:
-	    case SCANCODE_CURSORUP:
 		icode = KeyCodeUp;
 		break;
 	    case SCANCODE_CURSORBLOCKDOWN:
-	    case SCANCODE_CURSORDOWN:
 		icode = KeyCodeDown;
 		break;
 	    case SCANCODE_CURSORBLOCKLEFT:
-	    case SCANCODE_CURSORLEFT:
 		icode = KeyCodeLeft;
 		break;
 	    case SCANCODE_CURSORBLOCKRIGHT:
-	    case SCANCODE_CURSORRIGHT:
 		icode = KeyCodeRight;
 		break;
 	    case SCANCODE_F1:
@@ -851,6 +877,38 @@ local void KeyboardEvent(int scancode, int press) {
 	    case SCANCODE_F12:
 		icode = KeyCodeF12;
 		break;
+
+	    case SCANCODE_KEYPAD0:
+		icode = KeyCodeKP0;
+		break;
+	    case SCANCODE_KEYPAD1:
+		icode = KeyCodeKP1;
+		break;
+	    case SCANCODE_KEYPAD2:
+		icode = KeyCodeKP2;
+		break;
+	    case SCANCODE_KEYPAD3:
+		icode = KeyCodeKP3;
+		break;
+	    case SCANCODE_KEYPAD4:
+		icode = KeyCodeKP4;
+		break;
+	    case SCANCODE_KEYPAD5:
+		icode = KeyCodeKP5;
+		break;
+	    case SCANCODE_KEYPAD6:
+		icode = KeyCodeKP6;
+		break;
+	    case SCANCODE_KEYPAD7:
+		icode = KeyCodeKP7;
+		break;
+	    case SCANCODE_KEYPAD8:
+		icode = KeyCodeKP8;
+		break;
+	    case SCANCODE_KEYPAD9:
+		icode = KeyCodeKP9;
+		break;
+
 	    case SCANCODE_LEFTSHIFT:
 	    case SCANCODE_RIGHTSHIFT:
 		KeyModifiers &= ~ModifierShift;