[go: up one dir, main page]

Menu

[r39]: / input / Input.cpp  Maximize  Restore  History

Download this file

125 lines (116 with data), 2.3 kB

  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
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include "Input.hpp"
#ifdef _MSC_VER
namespace {
const Input::Key translate(const UINT wparam) {
switch (wparam) {
case VK_UP:
case 'S':
return Input::Forward;
case VK_DOWN:
case 'D':
return Input::Backward;
case VK_LEFT:
case 'H':
return Input::Left;
case VK_RIGHT:
case 'L':
return Input::Right;
case 'A':
return Input::LStep;
case 'F':
return Input::RStep;
case VK_RETURN:
case 'K':
return Input::Up;
case VK_SPACE:
case 'J':
return Input::Down;
}
return Input::Unknown;
}
}
long FAR PASCAL Input::proc(
unsigned msg,
UINT wparam,
LONG lparam
) {
switch (msg) {
case WM_KEYDOWN:
switch (wparam) {
case VK_ESCAPE:
exit();
break;
case 'W':
switchWire();
break;
}
case WM_KEYUP:
onKey(
translate(wparam),
msg == WM_KEYDOWN
);
}
return Graphics::proc(
msg,
wparam,
lparam
);
}
#else
#include <X11/keysym.h>
namespace {
const Input::Key translate(const KeySym keySym) {
switch (keySym) {
case XK_Up:
case XK_S:
case XK_s:
return Input::Forward;
case XK_Down:
case XK_D:
case XK_d:
return Input::Backward;
case XK_Left:
case XK_H:
case XK_h:
return Input::Left;
case XK_Right:
case XK_L:
case XK_l:
return Input::Right;
case XK_A:
case XK_a:
return Input::LStep;
case XK_F:
case XK_f:
return Input::RStep;
case XK_Return:
case XK_K:
case XK_k:
return Input::Up;
case XK_space:
case XK_J:
case XK_j:
return Input::Down;
}
return Input::Unknown;
}
}
void Input::onKeySym(
const KeySym keySym,
const bool isDown
) {
switch (keySym) {
case XK_W:
case XK_w:
if (isDown) {
switchWire();
}
break;
default:
onKey(
translate(keySym),
isDown
);
}
}
#endif