-/* $Id$
-
-This file is part of libmspgbase
-Copyright © 2007 Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
-#ifndef MSP_GBASE_KEYBOARD_H_
-#define MSP_GBASE_KEYBOARD_H_
+#ifndef MSP_INPUT_KEYBOARD_H_
+#define MSP_INPUT_KEYBOARD_H_
+#include <sigc++/trackable.h>
+#include <msp/graphics/window.h>
+#include <msp/stringcodec/ustring.h>
#include "device.h"
-#include "../gbase/window.h"
namespace Msp {
namespace Input {
-class Keyboard: public Device
+/**
+Adapts key events from a window to the abstracted input framework. Key codes
+are translated to platform-independent values. See keys.h for a list.
+*/
+class Keyboard: public Device, public sigc::trackable
{
+public:
+ sigc::signal<bool, StringCodec::unichar>::accumulated<EventAccumulator> signal_character;
+
private:
Graphics::Window &window;
public:
Keyboard(Graphics::Window &);
+ ~Keyboard();
- virtual std::string get_button_name(unsigned) const;
+ std::string get_button_name(unsigned) const override;
private:
- void key_press(unsigned, unsigned, unsigned);
- void key_release(unsigned, unsigned);
+ void input_event(const Graphics::Window::Event &);
};
} // namespace Input