123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- // Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
- // SPDX-FileCopyrightText: 2021 Jorrit Rouwe
- // SPDX-License-Identifier: MIT
- #pragma once
- class ApplicationWindow;
- enum class EKey
- {
- Invalid,
- Unknown,
- A,
- B,
- C,
- D,
- E,
- F,
- G,
- H,
- I,
- J,
- K,
- L,
- M,
- N,
- O,
- P,
- Q,
- R,
- S,
- T,
- U,
- V,
- W,
- X,
- Y,
- Z,
- Num0,
- Num1,
- Num2,
- Num3,
- Num4,
- Num5,
- Num6,
- Num7,
- Num8,
- Num9,
- Space,
- Comma,
- Period,
- Escape,
- LShift,
- RShift,
- LControl,
- RControl,
- LAlt,
- RAlt,
- Left,
- Right,
- Up,
- Down,
- Return,
- NumKeys,
- };
- /// Keyboard interface class which keeps track on the status of all keys and keeps track of the list of keys pressed.
- class Keyboard
- {
- public:
- /// Constructor
- Keyboard() = default;
- virtual ~Keyboard() = default;
- /// Initialization / shutdown
- virtual bool Initialize(ApplicationWindow *inWindow) = 0;
- virtual void Shutdown() = 0;
- /// Update the keyboard state
- virtual void Poll() = 0;
- /// Checks if a key is pressed or not
- virtual bool IsKeyPressed(EKey inKey) const = 0;
- /// Checks if a key is pressed and was not pressed the last time this function was called (state is stored in ioPrevState)
- bool IsKeyPressedAndTriggered(EKey inKey, bool &ioPrevState) const
- {
- bool prev_state = ioPrevState;
- ioPrevState = IsKeyPressed(inKey);
- return ioPrevState && !prev_state;
- }
- /// Buffered keyboard input, returns EKey::Invalid for none
- virtual EKey GetFirstKey() = 0;
- virtual EKey GetNextKey() = 0;
- };
|