SDXFrameWork  0.13
SDXFrameWork
 All Classes Namespaces Functions Variables Enumerations Enumerator Pages
Keyboard.h
1 //Copyright © 2014 SDXFramework
2 //[License]GNU Affero General Public License:return ; version 3
3 //[Contact]http://sourceforge.jp/projects/dxframework/
4 #pragma once
5 #include <Multimedia/SDX.h>
6 #include <Multimedia/Key.h>
7 #include <Utility/EnumArray.h>
8 
9 namespace SDX
10 {
12  enum class KeyCode
13  {
14  Back,
15  Tab,
16  Return,
17  LShift,
18  RShift,
19  LControl,
20  RControl,
21  Escape,
22  Space,
23  PageUp,
24  PageDown,
25  End,
26  Home,
27  Left,
28  Up,
29  Right,
30  Down,
31  Insert,
32  Delete,
33  Minus,
34  Yen,
35  PrevTrack,
36  Period,
37  Slash,
38  LAlt,
39  RAlt,
40  Scroll,
41  Semicolon,
42  Colon,
43  LBracket,
44  RBracket,
45  At,
46  Backslash,
47  Comma,
48  Capslock,
49  Pause,
50  Numpad0,
51  Numpad1,
52  Numpad2,
53  Numpad3,
54  Numpad4,
55  Numpad5,
56  Numpad6,
57  Numpad7,
58  Numpad8,
59  Numpad9,
60  Multiply,
61  Add,
62  Subtract,
63  Decimal,
64  Divide,
65  NUMPADEnter,
66 
67  F1,
68  F2,
69  F3,
70  F4,
71  F5,
72  F6,
73  F7,
74  F8,
75  F9,
76  F10,
77  F11,
78  F12,
79  A,
80  B,
81  C,
82  D,
83  E,
84  F,
85  G,
86  H,
87  I,
88  J,
89  K,
90  L,
91  M,
92  N,
93  O,
94  P,
95  Q,
96  R,
97  S,
98  T,
99  U,
100  V,
101  W,
102  X,
103  Y,
104  Z,
105  _0,
106  _1,
107  _2,
108  _3,
109  _4,
110  _5,
111  _6,
112  _7,
113  _8,
114  _9,
115 
116  COUNT,
117  };
118 
121  class Keyboard
122  {
123  friend class Input;
124  private:
125  MONO_STATE(Keyboard)
126 
128  public:
129  //とりあえずDoxygenのエラーを消すためのコメント
149 
167 
184 
197 
234 
236  void Reset()
237  {
238  Back.Reset();
239  Tab.Reset();
240  Return.Reset();
241  LShift.Reset();
242  RShift.Reset();
243  LControl.Reset();
244  RControl.Reset();
245  Escape.Reset();
246  Space.Reset();
247  PageUp.Reset();
248  PageDown.Reset();
249  End.Reset();
250  Home.Reset();
251  Left.Reset();
252  Up.Reset();
253  Right.Reset();
254  Down.Reset();
255  Insert.Reset();
256  Delete.Reset();
257 
258  Minus.Reset();
259  Yen.Reset();
260  PrevTrack.Reset();
261  Period.Reset();
262  Slash.Reset();
263  LAlt.Reset();
264  RAlt.Reset();
265  Scroll.Reset();
266  Semicolon.Reset();
267  Colon.Reset();
268  LBracket.Reset();
269  RBracket.Reset();
270  At.Reset();
271  Backslash.Reset();
272  Comma.Reset();
273  Capslock.Reset();
274  Pause.Reset();
275 
276  Numpad0.Reset();
277  Numpad1.Reset();
278  Numpad2.Reset();
279  Numpad3.Reset();
280  Numpad4.Reset();
281  Numpad5.Reset();
282  Numpad6.Reset();
283  Numpad7.Reset();
284  Numpad8.Reset();
285  Numpad9.Reset();
286  Multiply.Reset();
287  Add.Reset();
288  Subtract.Reset();
289  Decimal.Reset();
290  Divide.Reset();
291  NUMPADEnter.Reset();
292 
293  F1.Reset();
294  F2.Reset();
295  F3.Reset();
296  F4.Reset();
297  F5.Reset();
298  F6.Reset();
299  F7.Reset();
300  F8.Reset();
301  F9.Reset();
302  F10.Reset();
303  F11.Reset();
304  F12.Reset();
305 
306  A.Reset();
307  B.Reset();
308  C.Reset();
309  D.Reset();
310  E.Reset();
311  F.Reset();
312  G.Reset();
313  H.Reset();
314  I.Reset();
315  J.Reset();
316  K.Reset();
317  L.Reset();
318  M.Reset();
319  N.Reset();
320  O.Reset();
321  P.Reset();
322  Q.Reset();
323  R.Reset();
324  S.Reset();
325  T.Reset();
326  U.Reset();
327  V.Reset();
328  W.Reset();
329  X.Reset();
330  Y.Reset();
331  Z.Reset();
332  _0.Reset();
333  _1.Reset();
334  _2.Reset();
335  _3.Reset();
336  _4.Reset();
337  _5.Reset();
338  _6.Reset();
339  _7.Reset();
340  _8.Reset();
341  _9.Reset();
342  }
343 
345  void Update()
346  {
347  Back.Update(press[KeyCode::Back]);
348  Tab.Update(press[KeyCode::Tab]);
349  Return.Update(press[KeyCode::Return]);
350  LShift.Update(press[KeyCode::LShift]);
351  RShift.Update(press[KeyCode::RShift]);
352  LControl.Update(press[KeyCode::LControl]);
353  RControl.Update(press[KeyCode::RControl]);
354  Escape.Update(press[KeyCode::Escape]);
355  Space.Update(press[KeyCode::Space]);
356  PageUp.Update(press[KeyCode::PageUp]);
357  PageDown.Update(press[KeyCode::PageDown]);
358  End.Update(press[KeyCode::End]);
359  Home.Update(press[KeyCode::Home]);
360  Left.Update(press[KeyCode::Left]);
361  Up.Update(press[KeyCode::Up]);
362  Right.Update(press[KeyCode::Right]);
363  Down.Update(press[KeyCode::Down]);
364  Insert.Update(press[KeyCode::Insert]);
365  Delete.Update(press[KeyCode::Delete]);
366 
367  Minus.Update(press[KeyCode::Minus]);
368  Yen.Update(press[KeyCode::Yen]);
369  PrevTrack.Update(press[KeyCode::PrevTrack]);
370  Period.Update(press[KeyCode::Period]);
371  Slash.Update(press[KeyCode::Slash]);
372  LAlt.Update(press[KeyCode::LAlt]);
373  RAlt.Update(press[KeyCode::RAlt]);
374  Scroll.Update(press[KeyCode::Scroll]);
375  Semicolon.Update(press[KeyCode::Semicolon]);
376  Colon.Update(press[KeyCode::Colon]);
377  LBracket.Update(press[KeyCode::LBracket]);
378  RBracket.Update(press[KeyCode::RBracket]);
379  At.Update(press[KeyCode::At]);
380  Backslash.Update(press[KeyCode::Backslash]);
381  Comma.Update(press[KeyCode::Comma]);
382  Capslock.Update(press[KeyCode::Capslock]);
383  Pause.Update(press[KeyCode::Pause]);
384 
385  Numpad0.Update(press[KeyCode::Numpad0]);
386  Numpad1.Update(press[KeyCode::Numpad1]);
387  Numpad2.Update(press[KeyCode::Numpad2]);
388  Numpad3.Update(press[KeyCode::Numpad3]);
389  Numpad4.Update(press[KeyCode::Numpad4]);
390  Numpad5.Update(press[KeyCode::Numpad5]);
391  Numpad6.Update(press[KeyCode::Numpad6]);
392  Numpad7.Update(press[KeyCode::Numpad7]);
393  Numpad8.Update(press[KeyCode::Numpad8]);
394  Numpad9.Update(press[KeyCode::Numpad9]);
395  Multiply.Update(press[KeyCode::Multiply]);
396  Add.Update(press[KeyCode::Add]);
397  Subtract.Update(press[KeyCode::Subtract]);
398  Decimal.Update(press[KeyCode::Decimal]);
399  Divide.Update(press[KeyCode::Divide]);
400  NUMPADEnter.Update(press[KeyCode::NUMPADEnter]);
401 
402  F1.Update(press[KeyCode::F1]);
403  F2.Update(press[KeyCode::F2]);
404  F3.Update(press[KeyCode::F3]);
405  F4.Update(press[KeyCode::F4]);
406  F5.Update(press[KeyCode::F5]);
407  F6.Update(press[KeyCode::F6]);
408  F7.Update(press[KeyCode::F7]);
409  F8.Update(press[KeyCode::F8]);
410  F9.Update(press[KeyCode::F9]);
411  F10.Update(press[KeyCode::F10]);
412  F11.Update(press[KeyCode::F11]);
413  F12.Update(press[KeyCode::F12]);
414 
415  A.Update(press[KeyCode::A]);
416  B.Update(press[KeyCode::B]);
417  C.Update(press[KeyCode::C]);
418  D.Update(press[KeyCode::D]);
419  E.Update(press[KeyCode::E]);
420  F.Update(press[KeyCode::F]);
421  G.Update(press[KeyCode::G]);
422  H.Update(press[KeyCode::H]);
423  I.Update(press[KeyCode::I]);
424  J.Update(press[KeyCode::J]);
425  K.Update(press[KeyCode::K]);
426  L.Update(press[KeyCode::L]);
427  M.Update(press[KeyCode::M]);
428  N.Update(press[KeyCode::N]);
429  O.Update(press[KeyCode::O]);
430  P.Update(press[KeyCode::P]);
431  Q.Update(press[KeyCode::Q]);
432  R.Update(press[KeyCode::R]);
433  S.Update(press[KeyCode::S]);
434  T.Update(press[KeyCode::T]);
435  U.Update(press[KeyCode::U]);
436  V.Update(press[KeyCode::V]);
437  W.Update(press[KeyCode::W]);
438  X.Update(press[KeyCode::X]);
439  Y.Update(press[KeyCode::Y]);
440  Z.Update(press[KeyCode::Z]);
441  _0.Update(press[KeyCode::_0]);
442  _1.Update(press[KeyCode::_1]);
443  _2.Update(press[KeyCode::_2]);
444  _3.Update(press[KeyCode::_3]);
445  _4.Update(press[KeyCode::_4]);
446  _5.Update(press[KeyCode::_5]);
447  _6.Update(press[KeyCode::_6]);
448  _7.Update(press[KeyCode::_7]);
449  _8.Update(press[KeyCode::_8]);
450  _9.Update(press[KeyCode::_9]);
451  }
452 
454  static bool HoldAnyKey()
455  {
456  int size;
457  const Uint8 *press = SDL_GetKeyboardState(&size);
458 
459  for (int a = 0; a < size; ++a)
460  {
461  if (press[a]) return true;
462  }
463 
464  return false;
465  }
466 
470  {
471  switch (index)
472  {
473  case KeyCode::Back:return Back;
474  case KeyCode::Tab:return Tab;
475  case KeyCode::Return:return Return;
476  case KeyCode::LShift:return LShift;
477  case KeyCode::RShift:return RShift;
478  case KeyCode::LControl:return LControl;
479  case KeyCode::RControl:return RControl;
480  case KeyCode::Escape:return Escape;
481  case KeyCode::Space:return Space;
482  case KeyCode::PageUp:return PageUp;
483  case KeyCode::PageDown:return PageDown;
484  case KeyCode::End:return End;
485  case KeyCode::Home:return Home;
486  case KeyCode::Left:return Left;
487  case KeyCode::Up:return Up;
488  case KeyCode::Right:return Right;
489  case KeyCode::Down:return Down;
490  case KeyCode::Insert:return Insert;
491  case KeyCode::Delete:return Delete;
492  case KeyCode::Minus:return Minus;
493  case KeyCode::Yen:return Yen;
494  case KeyCode::PrevTrack:return PrevTrack;
495  case KeyCode::Period:return Period;
496  case KeyCode::Slash:return Slash;
497  case KeyCode::LAlt:return LAlt;
498  case KeyCode::RAlt:return RAlt;
499  case KeyCode::Scroll:return Scroll;
500  case KeyCode::Semicolon:return Semicolon;
501  case KeyCode::Colon:return Colon;
502  case KeyCode::LBracket:return LBracket;
503  case KeyCode::RBracket:return RBracket;
504  case KeyCode::At:return At;
505  case KeyCode::Backslash:return Backslash;
506  case KeyCode::Comma:return Comma;
507  case KeyCode::Capslock:return Capslock;
508  case KeyCode::Pause:return Pause;
509  case KeyCode::Numpad0:return Numpad0;
510  case KeyCode::Numpad1:return Numpad1;
511  case KeyCode::Numpad2:return Numpad2;
512  case KeyCode::Numpad3:return Numpad3;
513  case KeyCode::Numpad4:return Numpad4;
514  case KeyCode::Numpad5:return Numpad5;
515  case KeyCode::Numpad6:return Numpad6;
516  case KeyCode::Numpad7:return Numpad7;
517  case KeyCode::Numpad8:return Numpad8;
518  case KeyCode::Numpad9:return Numpad9;
519  case KeyCode::Multiply:return Multiply;
520  case KeyCode::Add:return Add;
521  case KeyCode::Subtract:return Subtract;
522  case KeyCode::Decimal:return Decimal;
523  case KeyCode::Divide:return Divide;
524  case KeyCode::NUMPADEnter:return NUMPADEnter;
525 
526  case KeyCode::F1:return F1;
527  case KeyCode::F2:return F2;
528  case KeyCode::F3:return F3;
529  case KeyCode::F4:return F4;
530  case KeyCode::F5:return F5;
531  case KeyCode::F6:return F6;
532  case KeyCode::F7:return F7;
533  case KeyCode::F8:return F8;
534  case KeyCode::F9:return F9;
535  case KeyCode::F10:return F10;
536  case KeyCode::F11:return F11;
537  case KeyCode::F12:return F12;
538  case KeyCode::A:return A;
539  case KeyCode::B:return B;
540  case KeyCode::C:return C;
541  case KeyCode::D:return D;
542  case KeyCode::E:return E;
543  case KeyCode::F:return F;
544  case KeyCode::G:return G;
545  case KeyCode::H:return H;
546  case KeyCode::I:return I;
547  case KeyCode::J:return J;
548  case KeyCode::K:return K;
549  case KeyCode::L:return L;
550  case KeyCode::M:return M;
551  case KeyCode::N:return N;
552  case KeyCode::O:return O;
553  case KeyCode::P:return P;
554  case KeyCode::Q:return Q;
555  case KeyCode::R:return R;
556  case KeyCode::S:return S;
557  case KeyCode::T:return T;
558  case KeyCode::U:return U;
559  case KeyCode::V:return V;
560  case KeyCode::W:return W;
561  case KeyCode::X:return X;
562  case KeyCode::Y:return Y;
563  case KeyCode::Z:return Z;
564  case KeyCode::_0:return _0;
565  case KeyCode::_1:return _1;
566  case KeyCode::_2:return _2;
567  case KeyCode::_3:return _3;
568  case KeyCode::_4:return _4;
569  case KeyCode::_5:return _5;
570  case KeyCode::_6:return _6;
571  case KeyCode::_7:return _7;
572  case KeyCode::_8:return _8;
573  case KeyCode::_9:return _9;
574  default: return Return;
575  }
576  }
577 
578  };
579 }
Key Tab
キー
Definition: Keyboard.h:131
Key N
キー
Definition: Keyboard.h:211
void Reset()
状態のリセット.
Definition: Keyboard.h:236
Key A
キー
Definition: Keyboard.h:198
Key PageDown
キー
Definition: Keyboard.h:140
Key B
キー
Definition: Keyboard.h:199
Key R
キー
Definition: Keyboard.h:215
Key Scroll
キー
Definition: Keyboard.h:157
Key Add
キー
Definition: Keyboard.h:179
Key F12
キー
Definition: Keyboard.h:196
キーボードの状態を表すクラス.
Definition: Keyboard.h:121
Key Home
キー
Definition: Keyboard.h:142
Key Numpad0
キー
Definition: Keyboard.h:168
void Update()
状態の更新.
Definition: Keyboard.h:345
Key Capslock
キー
Definition: Keyboard.h:165
Key F11
キー
Definition: Keyboard.h:195
書込時、末尾に追加
Key F9
キー
Definition: Keyboard.h:193
Key _6
キー
Definition: Keyboard.h:230
Key Left
キー
Definition: Keyboard.h:143
Key Up
キー
Definition: Keyboard.h:144
Key P
キー
Definition: Keyboard.h:213
Key Y
キー
Definition: Keyboard.h:222
Key Down
キー
Definition: Keyboard.h:146
Key Multiply
キー
Definition: Keyboard.h:178
Key LControl
キー
Definition: Keyboard.h:135
Key Insert
キー
Definition: Keyboard.h:147
Key D
キー
Definition: Keyboard.h:201
Key Right
キー
Definition: Keyboard.h:145
Key _9
キー
Definition: Keyboard.h:233
Key LShift
キー
Definition: Keyboard.h:133
Key F10
キー
Definition: Keyboard.h:194
Key Escape
キー
Definition: Keyboard.h:137
Key _5
キー
Definition: Keyboard.h:229
Key RBracket
キー
Definition: Keyboard.h:161
Key _3
キー
Definition: Keyboard.h:227
Key F
キー
Definition: Keyboard.h:203
Key Numpad6
キー
Definition: Keyboard.h:174
void Reset()
キーのリセット.
Definition: Key.h:20
Key Slash
キー
Definition: Keyboard.h:154
Key Yen
キー
Definition: Keyboard.h:151
Key LBracket
キー
Definition: Keyboard.h:160
Key F2
キー
Definition: Keyboard.h:186
Key G
キー
Definition: Keyboard.h:204
Key PageUp
キー
Definition: Keyboard.h:139
Key End
キー
Definition: Keyboard.h:141
Key RShift
キー
Definition: Keyboard.h:134
Key Back
キー
Definition: Keyboard.h:130
Key F5
キー
Definition: Keyboard.h:189
Key L
キー
Definition: Keyboard.h:209
Key PrevTrack
キー
Definition: Keyboard.h:152
Key Decimal
キー
Definition: Keyboard.h:181
Key F8
キー
Definition: Keyboard.h:192
Key Semicolon
キー
Definition: Keyboard.h:158
Key K
キー
Definition: Keyboard.h:208
Key LAlt
キー
Definition: Keyboard.h:155
Key NUMPADEnter
キー
Definition: Keyboard.h:183
Key Numpad5
キー
Definition: Keyboard.h:173
Key _1
キー
Definition: Keyboard.h:225
Key J
キー
Definition: Keyboard.h:207
Key O
キー
Definition: Keyboard.h:212
Key M
キー
Definition: Keyboard.h:210
Key _8
キー
Definition: Keyboard.h:232
Key RControl
キー
Definition: Keyboard.h:136
Key U
キー
Definition: Keyboard.h:218
Key S
キー
Definition: Keyboard.h:216
Key F4
キー
Definition: Keyboard.h:188
Key RAlt
キー
Definition: Keyboard.h:156
Key F1
キー
Definition: Keyboard.h:185
Key Numpad2
キー
Definition: Keyboard.h:170
Key Minus
キー
Definition: Keyboard.h:150
Key Numpad9
キー
Definition: Keyboard.h:177
Key I
キー
Definition: Keyboard.h:206
キーやマウスによる入力をまとめて管理するクラス.
Definition: Input.h:17
Key & operator[](KeyCode index)
KeyCodeでアクセス.
Definition: Keyboard.h:469
Key _2
キー
Definition: Keyboard.h:226
Key X
キー
Definition: Keyboard.h:221
Key Pause
キー
Definition: Keyboard.h:166
static bool HoldAnyKey()
いずれかのキーが押されているか取得.
Definition: Keyboard.h:454
このコマでアニメーションを停止する
Key _7
キー
Definition: Keyboard.h:231
Key V
キー
Definition: Keyboard.h:219
Key Space
キー
Definition: Keyboard.h:138
Key Backslash
キー
Definition: Keyboard.h:163
Key H
キー
Definition: Keyboard.h:205
void Update(bool 押下フラグ)
押下状態の更新.
Definition: Key.h:29
Key C
キー
Definition: Keyboard.h:200
Key At
キー
Definition: Keyboard.h:162
Key Numpad4
キー
Definition: Keyboard.h:172
Key Numpad1
キー
Definition: Keyboard.h:169
Key Divide
キー
Definition: Keyboard.h:182
Key Z
キー
Definition: Keyboard.h:223
Key F7
キー
Definition: Keyboard.h:191
Key W
キー
Definition: Keyboard.h:220
Key Q
キー
Definition: Keyboard.h:214
Key F3
キー
Definition: Keyboard.h:187
Key Subtract
キー
Definition: Keyboard.h:180
Key Numpad8
キー
Definition: Keyboard.h:176
各ボタンとキーを表すクラス.
Definition: Key.h:11
Key Period
キー
Definition: Keyboard.h:153
Key _4
キー
Definition: Keyboard.h:228
Key Comma
キー
Definition: Keyboard.h:164
Key E
キー
Definition: Keyboard.h:202
Key _0
キー
Definition: Keyboard.h:224
Key F6
キー
Definition: Keyboard.h:190
Key Numpad3
キー
Definition: Keyboard.h:171
Key Numpad7
キー
Definition: Keyboard.h:175
KeyCode
キーボードコード.
Definition: Keyboard.h:12
Key Colon
キー
Definition: Keyboard.h:159
Key T
キー
Definition: Keyboard.h:217
Key Return
キー
Definition: Keyboard.h:132
Key Delete
キー
Definition: Keyboard.h:148