committed by
Narr the Reg
3 changed files with 99 additions and 0 deletions
-
2src/input_common/CMakeLists.txt
-
47src/input_common/drivers/touch_screen.cpp
-
50src/input_common/drivers/touch_screen.h
@ -0,0 +1,47 @@ |
|||
// Copyright 2021 yuzu Emulator Project
|
|||
// Licensed under GPLv2 or any later version
|
|||
// Refer to the license.txt file included
|
|||
|
|||
#include "common/param_package.h"
|
|||
#include "input_common/drivers/touch_screen.h"
|
|||
|
|||
namespace InputCommon { |
|||
|
|||
TouchScreen::TouchScreen(const std::string input_engine_) : InputEngine(input_engine_) { |
|||
PreSetController(identifier); |
|||
} |
|||
|
|||
void TouchScreen::TouchMoved(float x, float y, std::size_t finger) { |
|||
if (finger >= 16) { |
|||
return; |
|||
} |
|||
TouchPressed(x, y, finger); |
|||
} |
|||
|
|||
void TouchScreen::TouchPressed(float x, float y, std::size_t finger) { |
|||
if (finger >= 16) { |
|||
return; |
|||
} |
|||
SetButton(identifier, static_cast<int>(finger), true); |
|||
SetAxis(identifier, static_cast<int>(finger * 2), x); |
|||
SetAxis(identifier, static_cast<int>(finger * 2 + 1), y); |
|||
} |
|||
|
|||
void TouchScreen::TouchReleased(std::size_t finger) { |
|||
if (finger >= 16) { |
|||
return; |
|||
} |
|||
SetButton(identifier, static_cast<int>(finger), false); |
|||
SetAxis(identifier, static_cast<int>(finger * 2), 0.0f); |
|||
SetAxis(identifier, static_cast<int>(finger * 2 + 1), 0.0f); |
|||
} |
|||
|
|||
void TouchScreen::ReleaseAllTouch() { |
|||
for (int index = 0; index < 16; ++index) { |
|||
SetButton(identifier, index, false); |
|||
SetAxis(identifier, index * 2, 0.0f); |
|||
SetAxis(identifier, index * 2 + 1, 0.0f); |
|||
} |
|||
} |
|||
|
|||
} // namespace InputCommon
|
|||
@ -0,0 +1,50 @@ |
|||
// Copyright 2021 yuzu Emulator Project |
|||
// Licensed under GPLv2 or any later version |
|||
// Refer to the license.txt file included |
|||
|
|||
#pragma once |
|||
|
|||
#include "input_common/input_engine.h" |
|||
|
|||
namespace InputCommon { |
|||
|
|||
/** |
|||
* A button device factory representing a keyboard. It receives keyboard events and forward them |
|||
* to all button devices it created. |
|||
*/ |
|||
class TouchScreen final : public InputCommon::InputEngine { |
|||
public: |
|||
explicit TouchScreen(const std::string input_engine_); |
|||
|
|||
/** |
|||
* Signals that mouse has moved. |
|||
* @param x the x-coordinate of the cursor |
|||
* @param y the y-coordinate of the cursor |
|||
* @param center_x the x-coordinate of the middle of the screen |
|||
* @param center_y the y-coordinate of the middle of the screen |
|||
*/ |
|||
void TouchMoved(float x, float y, std::size_t finger); |
|||
|
|||
/** |
|||
* Sets the status of all buttons bound with the key to pressed |
|||
* @param key_code the code of the key to press |
|||
*/ |
|||
void TouchPressed(float x, float y, std::size_t finger); |
|||
|
|||
/** |
|||
* Sets the status of all buttons bound with the key to released |
|||
* @param key_code the code of the key to release |
|||
*/ |
|||
void TouchReleased(std::size_t finger); |
|||
|
|||
void ReleaseAllTouch(); |
|||
|
|||
private: |
|||
const PadIdentifier identifier = { |
|||
.guid = Common::UUID{""}, |
|||
.port = 0, |
|||
.pad = 0, |
|||
}; |
|||
}; |
|||
|
|||
} // namespace InputCommon |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue