1 ////////////////////////////////////////////////////////////////////////////////////////
2 //
3 // Nestopia - NES/Famicom emulator written in C++
4 //
5 // Copyright (C) 2003-2008 Martin Freij
6 //
7 // This file is part of Nestopia.
8 //
9 // Nestopia is free software; you can redistribute it and/or modify
10 // it under the terms of the GNU General Public License as published by
11 // the Free Software Foundation; either version 2 of the License, or
12 // (at your option) any later version.
13 //
14 // Nestopia is distributed in the hope that it will be useful,
15 // but WITHOUT ANY WARRANTY; without even the implied warranty of
16 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 // GNU General Public License for more details.
18 //
19 // You should have received a copy of the GNU General Public License
20 // along with Nestopia; if not, write to the Free Software
21 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
22 //
23 ////////////////////////////////////////////////////////////////////////////////////////
24 
25 #ifndef NST_SYSTEM_KEYBOARD_H
26 #define NST_SYSTEM_KEYBOARD_H
27 
28 #pragma once
29 
30 #include "NstString.hpp"
31 
32 namespace Nestopia
33 {
34 	namespace System
35 	{
36 		class Keyboard
37 		{
38 		public:
39 
40 			enum
41 			{
42 				NUM_KEYS = 0x100,
43 				NONE = 0
44 			};
45 
46 			static uint GetKey(const GenericString);
47 			static const GenericString GetName(uint);
48 
49 			enum Indicator
50 			{
51 				CAPS_LOCK = 0x14,
52 				NUM_LOCK = 0x90,
53 				SCROLL_LOCK = 0x91
54 			};
55 
56 			static bool ToggleIndicator(Indicator,bool);
57 
58 		private:
59 
60 			struct KeyName : HeapString
61 			{
62 				void Set(uint);
63 			};
64 
65 			static KeyName keyNames[NUM_KEYS];
66 		};
67 	}
68 }
69 
70 #endif
71