Distributed under the LGPL
*/
+#include <msp/strings/formatter.h>
+#include "display.h"
#include "keyboard.h"
namespace Msp {
namespace Input {
-Keyboard::Keyboard(Graphics::Window &window)
+Keyboard::Keyboard(Graphics::Window &w):
+ window(w)
{
+ name="Keyboard";
+
buttons.resize(256, false);
window.signal_key_press.connect(sigc::mem_fun(this, &Keyboard::key_press));
window.signal_key_release.connect(sigc::mem_fun(this, &Keyboard::key_release));
}
+std::string Keyboard::get_button_name(unsigned btn) const
+{
+#ifndef WIN32
+ KeySym ksym=XKeycodeToKeysym(window.get_display().get_display(), btn, 0);
+ return XKeysymToString(ksym);
+#else
+ char buf[128];
+ if(!GetKeyNameText(btn<<16, buf, sizeof(buf)))
+ return format("Key %d", btn);
+ return buf;
+#endif
+}
+
void Keyboard::key_press(unsigned key, unsigned, unsigned)
{
set_button_state(key, true, true);