| | |
| | |
| |
|
| | #include "common/param_package.h" |
| | #include "common/settings_input.h" |
| | #include "input_common/drivers/keyboard.h" |
| |
|
| | namespace InputCommon { |
| |
|
| | constexpr PadIdentifier key_identifier = { |
| | .guid = Common::UUID{}, |
| | .port = 0, |
| | .pad = 0, |
| | }; |
| | constexpr PadIdentifier keyboard_key_identifier = { |
| | .guid = Common::UUID{}, |
| | .port = 1, |
| | .pad = 0, |
| | }; |
| | constexpr PadIdentifier keyboard_modifier_identifier = { |
| | .guid = Common::UUID{}, |
| | .port = 1, |
| | .pad = 1, |
| | }; |
| |
|
| | Keyboard::Keyboard(std::string input_engine_) : InputEngine(std::move(input_engine_)) { |
| | |
| | |
| | |
| | |
| | |
| | PreSetController(key_identifier); |
| | PreSetController(keyboard_key_identifier); |
| | PreSetController(keyboard_modifier_identifier); |
| | } |
| |
|
| | void Keyboard::PressKey(int key_code) { |
| | SetButton(key_identifier, key_code, true); |
| | } |
| |
|
| | void Keyboard::ReleaseKey(int key_code) { |
| | SetButton(key_identifier, key_code, false); |
| | } |
| |
|
| | void Keyboard::PressKeyboardKey(int key_index) { |
| | if (key_index == Settings::NativeKeyboard::None) { |
| | return; |
| | } |
| | SetButton(keyboard_key_identifier, key_index, true); |
| | } |
| |
|
| | void Keyboard::ReleaseKeyboardKey(int key_index) { |
| | if (key_index == Settings::NativeKeyboard::None) { |
| | return; |
| | } |
| | SetButton(keyboard_key_identifier, key_index, false); |
| | } |
| |
|
| | void Keyboard::SetKeyboardModifiers(int key_modifiers) { |
| | for (int i = 0; i < 32; ++i) { |
| | bool key_value = ((key_modifiers >> i) & 0x1) != 0; |
| | SetButton(keyboard_modifier_identifier, i, key_value); |
| | |
| | switch (i) { |
| | case Settings::NativeKeyboard::LeftControl: |
| | SetButton(keyboard_key_identifier, Settings::NativeKeyboard::LeftControlKey, key_value); |
| | break; |
| | case Settings::NativeKeyboard::LeftShift: |
| | SetButton(keyboard_key_identifier, Settings::NativeKeyboard::LeftShiftKey, key_value); |
| | break; |
| | case Settings::NativeKeyboard::LeftAlt: |
| | SetButton(keyboard_key_identifier, Settings::NativeKeyboard::LeftAltKey, key_value); |
| | break; |
| | case Settings::NativeKeyboard::LeftMeta: |
| | SetButton(keyboard_key_identifier, Settings::NativeKeyboard::LeftMetaKey, key_value); |
| | break; |
| | case Settings::NativeKeyboard::RightControl: |
| | SetButton(keyboard_key_identifier, Settings::NativeKeyboard::RightControlKey, |
| | key_value); |
| | break; |
| | case Settings::NativeKeyboard::RightShift: |
| | SetButton(keyboard_key_identifier, Settings::NativeKeyboard::RightShiftKey, key_value); |
| | break; |
| | case Settings::NativeKeyboard::RightAlt: |
| | SetButton(keyboard_key_identifier, Settings::NativeKeyboard::RightAltKey, key_value); |
| | break; |
| | case Settings::NativeKeyboard::RightMeta: |
| | SetButton(keyboard_key_identifier, Settings::NativeKeyboard::RightMetaKey, key_value); |
| | break; |
| | default: |
| | |
| | |
| | break; |
| | } |
| | } |
| | } |
| |
|
| | void Keyboard::ReleaseAllKeys() { |
| | ResetButtonState(); |
| | } |
| |
|
| | std::vector<Common::ParamPackage> Keyboard::GetInputDevices() const { |
| | std::vector<Common::ParamPackage> devices; |
| | devices.emplace_back(Common::ParamPackage{ |
| | {"engine", GetEngineName()}, |
| | {"display", "Keyboard Only"}, |
| | }); |
| | return devices; |
| | } |
| |
|
| | } |
| |
|