raze-gles/polymer/eduke32/source/jmact/keyboard.h
hendricks266 fcf9beae6a Work-in-progress adjustment to the C code to compile under C++. It builds for me without errors using Win32 MinGW-GCC, but it still generates warning soup. No guarantees about MSVC or anything using SDL. Enable C++ by building with CPLUSPLUS=1. C remains the default and should compile with no change in setup.
Credit to Plagman for the idea and doing the work on the game side, which is included in this commit.

(Building as C++ will give us features with which we can make improvements and optimizations on the multiplayer code and Polymer.)

git-svn-id: https://svn.eduke32.com/eduke32@3116 1a8010ca-5511-0410-912e-c29ae57300e0
2012-11-05 02:49:08 +00:00

109 lines
3.5 KiB
C

//-------------------------------------------------------------------------
/*
Copyright (C) 1996, 2003 - 3D Realms Entertainment
This file is part of Duke Nukem 3D version 1.5 - Atomic Edition
Duke Nukem 3D is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Original Source: 1996 - Todd Replogle
Prepared for public release: 03/21/2003 - Charlie Wiederhold, 3D Realms
Modifications for JonoF's port by Jonathon Fowler (jf@jonof.id.au)
*/
//-------------------------------------------------------------------------
#ifndef _keyboard_public
#define _keyboard_public
#ifdef EXTERNC
{
#endif
#include "baselayer.h" // for the keyboard stuff
#include "scancodes.h"
/*
=============================================================================
DEFINES
=============================================================================
*/
typedef uint8_t kb_scancode;
#define MAXKEYBOARDSCAN 128
/*
=============================================================================
GLOBAL VARIABLES
=============================================================================
*/
//extern byte KB_KeyDown[ MAXKEYBOARDSCAN ]; // Keyboard state array
#define KB_KeyDown keystatus
extern kb_scancode KB_LastScan;
/*
=============================================================================
MACROS
=============================================================================
*/
#define KB_GetLastScanCode() ( KB_LastScan )
#define KB_SetLastScanCode( scancode ) { KB_LastScan = ( scancode ); }
#define KB_ClearLastScanCode() { KB_SetLastScanCode( sc_None ); }
#define KB_KeyPressed( scan ) ( keystatus[ ( scan ) ] != 0 )
#define KB_ClearKeyDown( scan ) { keystatus[ ( scan ) ] = FALSE; }
#define KB_UnBoundKeyPressed( scan ) ( keystatus[ ( scan ) ] != 0 && !KeyBindings[scan].cmd[0])
/*
=============================================================================
FUNCTION PROTOTYPES
=============================================================================
*/
int32_t KB_KeyWaiting( void ); // Checks if a character is waiting in the keyboard queue
char KB_Getch( void ); // Gets the next keypress
void KB_FlushKeyboardQueue( void ); // Empties the keyboard queue of all waiting characters.
void KB_ClearKeysDown( void ); // Clears all keys down flags.
const char * KB_ScanCodeToString( kb_scancode scancode ); // convert scancode into a string
kb_scancode KB_StringToScanCode( char * string ); // convert a string into a scancode
void KB_TurnKeypadOn( void ); // turn the keypad on
void KB_TurnKeypadOff( void ); // turn the keypad off
int32_t KB_KeypadActive( void ); // check whether keypad is active
void KB_Startup( void );
void KB_Shutdown( void );
#define KB_FlushKeyBoardQueue KB_FlushKeyboardQueue
#define KB_GetCh KB_Getch
#ifdef EXTERNC
};
#endif
#endif