File: KeyInput.h

package info (click to toggle)
spring 88.0%2Bdfsg1-1.1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 41,524 kB
  • sloc: cpp: 343,114; ansic: 38,414; python: 12,257; java: 12,203; awk: 5,748; sh: 1,204; xml: 997; perl: 405; objc: 192; makefile: 181; php: 134; sed: 2
file content (45 lines) | stat: -rwxr-xr-x 1,105 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */

#ifndef KEYBOARD_INPUT_H
#define KEYBOARD_INPUT_H

#include <boost/cstdint.hpp>
#include <vector>

class KeyInput {
public:
	static KeyInput* GetInstance();
	static void FreeInstance(KeyInput*);

	KeyInput();
	~KeyInput() { keys.clear(); }

	void Update(boost::uint16_t currKeyUnicodeChar, boost::int8_t fakeMetaKey);

	void SetKeyState(boost::uint16_t idx, boost::uint8_t state) { keys[idx] = state; }
	boost::uint8_t GetKeyState(boost::uint16_t idx) const { return keys[idx]; }

	boost::uint16_t GetNormalizedKeySymbol(boost::uint16_t sym) const;
	boost::uint16_t GetCurrentKeyUnicodeChar() const { return currentKeyUnicodeChar; }

	bool IsKeyPressed(boost::uint16_t idx) const { return (keys[idx] != 0); }

private:
	/**
	* @brief keys
	*
	* Array of possible keys, and which are being pressed
	*/
	std::vector<boost::uint8_t> keys;

	/**
	* @brief currentKeyUnicodeChar
	*
	* Unicode character for the current KeyPressed or KeyReleased
	*/
	boost::uint16_t currentKeyUnicodeChar;
};

extern KeyInput* keyInput;

#endif