#pragma once

#include "..\munga\style.h"

#define VK_MASK		0x00FF
#define CTRL_BIT	0x0100
#define ALT_BIT		0x0200
//
//----------------------------------------------------------------
// Handy keycode definitions
//----------------------------------------------------------------
//
#	define PCK_ESC			VK_ESCAPE	// "escape" key
#	define PCK_ENTER		VK_RETURN	// the ever-popular "enter" key
#	define PCK_TAB			VK_TAB		// the obvious "tab" key
//
//----------------------------------------------------------------
// Extended keycodes: function keys
//----------------------------------------------------------------
//
#	define PCK_F1			VK_F1
#	define PCK_F2			VK_F2
#	define PCK_F3			VK_F3
#	define PCK_F4			VK_F4
#	define PCK_F5			VK_F5
#	define PCK_F6			VK_F6
#	define PCK_F7			VK_F7
#	define PCK_F8			VK_F8
#	define PCK_F9			VK_F9
#	define PCK_F10			VK_F10
#	define PCK_F11			VK_F11
#	define PCK_F12			VK_F12
//
//----------------------------------------------------------------
// Extended keycodes: ctrl-function keys
//----------------------------------------------------------------
//
#	define PCK_CTL_F1		(CTRL_BIT | VK_F1)
#	define PCK_CTL_F2		(CTRL_BIT | VK_F2)
#	define PCK_CTL_F3		(CTRL_BIT | VK_F3)
#	define PCK_CTL_F4		(CTRL_BIT | VK_F4)
#	define PCK_CTL_F5		(CTRL_BIT | VK_F5)
#	define PCK_CTL_F6		(CTRL_BIT | VK_F6)
#	define PCK_CTL_F7		(CTRL_BIT | VK_F7)
#	define PCK_CTL_F8		(CTRL_BIT | VK_F8)
#	define PCK_CTL_F9		(CTRL_BIT | VK_F9)
#	define PCK_CTL_F10		(CTRL_BIT | VK_F10)
#	define PCK_CTL_F11		(CTRL_BIT | VK_F11)
#	define PCK_CTL_F12		(CTRL_BIT | VK_F12)
//
//----------------------------------------------------------------
// Extended keycodes: alt-function keys
//----------------------------------------------------------------
//
#	define PCK_ALT_F1		(ALT_BIT | VK_F1)
#	define PCK_ALT_F2		(ALT_BIT | VK_F2)
#	define PCK_ALT_F3		(ALT_BIT | VK_F3)
#	define PCK_ALT_F4		(ALT_BIT | VK_F4)
#	define PCK_ALT_F5		(ALT_BIT | VK_F5)
#	define PCK_ALT_F6		(ALT_BIT | VK_F6)
#	define PCK_ALT_F7		(ALT_BIT | VK_F7)
#	define PCK_ALT_F8		(ALT_BIT | VK_F8)
#	define PCK_ALT_F9		(ALT_BIT | VK_F9)
#	define PCK_ALT_F10		(ALT_BIT | VK_F10)
#	define PCK_ALT_F11		(ALT_BIT | VK_F11)
#	define PCK_ALT_F12		(ALT_BIT | VK_F12)
//
//----------------------------------------------------------------
// Extended keycodes: cursor keys (numeric keypad WITH NUMLOCK OFF!)
//----------------------------------------------------------------
//
#	define PCK_INS		VK_INSERT
#	define PCK_DEL		VK_DELETE
#	define PCK_HOME		VK_HOME
#	define PCK_UP		VK_UP
#	define PCK_PGUP		VK_PRIOR
#	define PCK_LEFT		VK_LEFT
#	define PCK_RIGHT	VK_RIGHT
#	define PCK_END		VK_END
#	define PCK_DOWN		VK_DOWN
#	define PCK_PGDN		VK_NEXT
//
//----------------------------------------------------------------
// Extended keycodes: ctrl-cursor keys
//----------------------------------------------------------------
//
#	define PCK_CTL_INS		(CTRL_BIT | VK_INSERT)
#	define PCK_CTL_DEL		(CTRL_BIT | VK_DELETE)
#	define PCK_CTL_HOME		(CTRL_BIT | VK_HOME)
#	define PCK_CTL_UP		(CTRL_BIT | VK_UP)
#	define PCK_CTL_PGUP		(CTRL_BIT | VK_PRIOR)
#	define PCK_CTL_LEFT		(CTRL_BIT | VK_LEFT)
#	define PCK_CTL_RIGHT	(CTRL_BIT | VK_RIGHT)
#	define PCK_CTL_END		(CTRL_BIT | VK_END)
#	define PCK_CTL_DOWN		(CTRL_BIT | VK_DOWN)
#	define PCK_CTL_PGDN		(CTRL_BIT | VK_NEXT)
//
//----------------------------------------------------------------
// Extended keycodes: alt-cursor keys
//----------------------------------------------------------------
//
#	define PCK_ALT_INS		(ALT_BIT | VK_INSERT)
#	define PCK_ALT_DEL		(ALT_BIT | VK_DELETE)
#	define PCK_ALT_HOME		(ALT_BIT | VK_HOME)
#	define PCK_ALT_UP		(ALT_BIT | VK_UP)
#	define PCK_ALT_PGUP		(ALT_BIT | VK_PRIOR)
#	define PCK_ALT_LEFT		(ALT_BIT | VK_LEFT)
#	define PCK_ALT_RIGHT	(ALT_BIT | VK_RIGHT)
#	define PCK_ALT_END		(ALT_BIT | VK_END)
#	define PCK_ALT_DOWN		(ALT_BIT | VK_DOWN)
#	define PCK_ALT_PGDN		(ALT_BIT | VK_NEXT)
//
//----------------------------------------------------------------
// Extended keycodes: alt-keys
//----------------------------------------------------------------
//
#	define PCK_ALT_W		(ALT_BIT | 'W')
#	define PCK_ALT_R		(ALT_BIT | 'R')
#	define PCK_ALT_P		(ALT_BIT | 'P')
#	define PCK_ALT_F		(ALT_BIT | 'F')
#	define PCK_ALT_K		(ALT_BIT | 'K')
#	define PCK_ALT_V		(ALT_BIT | 'V')
#	define PCK_ALT_SLASH	(ALT_BIT | VK_OEM_2)	// '/?' key

//
//----------------------------------------------------------------
// Extended keycodes: ctrl-keys
//----------------------------------------------------------------
//
#	define PCK_CTRL_W		(CTRL_BIT | 'W')
#	define PCK_CTRL_R		(CTRL_BIT | 'R')
#	define PCK_CTRL_P		(CTRL_BIT | 'P')
#	define PCK_CTRL_F		(CTRL_BIT | 'F')
#	define PCK_CTRL_K		(CTRL_BIT | 'K')
#	define PCK_CTRL_V		(CTRL_BIT | 'V')
#	define PCK_CTRL_SLASH	(CTRL_BIT | VK_OEM_2)	// '/?' key

extern int	PC_Keyboard_Read(void);		// returns code or zero if no key
