mirror of
https://github.com/barry-ran/QtScrcpy.git
synced 2025-07-19 07:21:28 +00:00
feat: optimize process steer wheel
This commit is contained in:
parent
b4b7b0dc25
commit
1b87d3b58b
2 changed files with 31 additions and 27 deletions
|
@ -119,7 +119,6 @@ void InputConvertGame::loadKeyMap(const QString &json)
|
||||||
m_ctrlMouseMove.startPosPixel = calcFrameAbsolutePos(m_ctrlMouseMove.startPosRel);
|
m_ctrlMouseMove.startPosPixel = calcFrameAbsolutePos(m_ctrlMouseMove.startPosRel);
|
||||||
}
|
}
|
||||||
if(m_keyMap.isValidSteerWheelMap()){
|
if(m_keyMap.isValidSteerWheelMap()){
|
||||||
m_ctrlSteerWheel.valid = true;
|
|
||||||
m_ctrlMouseMove.touching = false;
|
m_ctrlMouseMove.touching = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -222,46 +221,51 @@ void InputConvertGame::processSteerWheel(const KeyMap::KeyMapNode &node, const Q
|
||||||
int key = from->key();
|
int key = from->key();
|
||||||
bool flag = from->type() == QEvent::KeyPress;
|
bool flag = from->type() == QEvent::KeyPress;
|
||||||
// identify keys
|
// identify keys
|
||||||
if(key == node.data.steerWheel.up.key){
|
if (key == node.data.steerWheel.up.key) {
|
||||||
m_ctrlSteerWheel.pressedUp = flag;
|
m_ctrlSteerWheel.pressedUp = flag;
|
||||||
}else if(key == node.data.steerWheel.right.key){
|
} else if (key == node.data.steerWheel.right.key) {
|
||||||
m_ctrlSteerWheel.pressedRight = flag;
|
m_ctrlSteerWheel.pressedRight = flag;
|
||||||
}else if(key == node.data.steerWheel.down.key){
|
} else if (key == node.data.steerWheel.down.key) {
|
||||||
m_ctrlSteerWheel.pressedDown = flag;
|
m_ctrlSteerWheel.pressedDown = flag;
|
||||||
}else{ // left
|
} else { // left
|
||||||
m_ctrlSteerWheel.pressedLeft = flag;
|
m_ctrlSteerWheel.pressedLeft = flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// calc offset and pressed number
|
||||||
QPointF offset(0.0, 0.0);
|
QPointF offset(0.0, 0.0);
|
||||||
int nPressed = 0;
|
int pressedNum = 0;
|
||||||
if(m_ctrlSteerWheel.pressedUp){
|
if (m_ctrlSteerWheel.pressedUp) {
|
||||||
++nPressed;
|
++pressedNum;
|
||||||
offset.ry() -= node.data.steerWheel.up.extendOffset;
|
offset.ry() -= node.data.steerWheel.up.extendOffset;
|
||||||
}
|
}
|
||||||
if(m_ctrlSteerWheel.pressedRight){
|
if (m_ctrlSteerWheel.pressedRight) {
|
||||||
++nPressed;
|
++pressedNum;
|
||||||
offset.rx() += node.data.steerWheel.right.extendOffset;
|
offset.rx() += node.data.steerWheel.right.extendOffset;
|
||||||
}
|
}
|
||||||
if(m_ctrlSteerWheel.pressedDown){
|
if (m_ctrlSteerWheel.pressedDown) {
|
||||||
++nPressed;
|
++pressedNum;
|
||||||
offset.ry() += node.data.steerWheel.down.extendOffset;
|
offset.ry() += node.data.steerWheel.down.extendOffset;
|
||||||
}
|
}
|
||||||
if(m_ctrlSteerWheel.pressedLeft){
|
if (m_ctrlSteerWheel.pressedLeft) {
|
||||||
++nPressed;
|
++pressedNum;
|
||||||
offset.rx() -= node.data.steerWheel.left.extendOffset;
|
offset.rx() -= node.data.steerWheel.left.extendOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
// action
|
// action
|
||||||
//qDebug()<<nPressed<<"-"<<char(from->key())<<"-"<<from->type()<<"-"<<offset;
|
if(pressedNum == 0){
|
||||||
if(nPressed == 0){ // release all
|
// touch up release all
|
||||||
int id = getTouchID(m_ctrlSteerWheel.touchKey);
|
int id = getTouchID(m_ctrlSteerWheel.touchKey);
|
||||||
sendTouchUpEvent(id, node.data.steerWheel.centerPos + m_ctrlSteerWheel.lastOffset);
|
sendTouchUpEvent(id, node.data.steerWheel.centerPos + m_ctrlSteerWheel.lastOffset);
|
||||||
detachTouchID(m_ctrlSteerWheel.touchKey);
|
detachTouchID(m_ctrlSteerWheel.touchKey);
|
||||||
}else{
|
} else {
|
||||||
int id;
|
int id;
|
||||||
if(nPressed == 1 && flag){ // first press
|
// first press, get key and touch down
|
||||||
|
if (pressedNum == 1 && flag) {
|
||||||
m_ctrlSteerWheel.touchKey = from->key();
|
m_ctrlSteerWheel.touchKey = from->key();
|
||||||
id = attachTouchID(m_ctrlSteerWheel.touchKey);
|
id = attachTouchID(m_ctrlSteerWheel.touchKey);
|
||||||
sendTouchDownEvent(id, node.data.steerWheel.centerPos);
|
sendTouchDownEvent(id, node.data.steerWheel.centerPos);
|
||||||
}else{
|
} else {
|
||||||
|
// jsut get touch id and move
|
||||||
id = getTouchID(m_ctrlSteerWheel.touchKey);
|
id = getTouchID(m_ctrlSteerWheel.touchKey);
|
||||||
}
|
}
|
||||||
sendTouchMoveEvent(id, node.data.steerWheel.centerPos + offset);
|
sendTouchMoveEvent(id, node.data.steerWheel.centerPos + offset);
|
||||||
|
|
|
@ -67,14 +67,14 @@ private:
|
||||||
int multiTouchID[MULTI_TOUCH_MAX_NUM] = { 0 };
|
int multiTouchID[MULTI_TOUCH_MAX_NUM] = { 0 };
|
||||||
|
|
||||||
// steer wheel
|
// steer wheel
|
||||||
struct{
|
struct {
|
||||||
bool valid = false;
|
// the first key pressed
|
||||||
bool touching = false;
|
int touchKey = Qt::Key_unknown;
|
||||||
int touchKey = Qt::Key_unknown; // the first key pressed
|
bool pressedUp = false;
|
||||||
int nKeyPressed = 0;
|
bool pressedDown = false;
|
||||||
bool pressedUp = false, pressedDown = false;
|
bool pressedLeft = false;
|
||||||
bool pressedLeft = false, pressedRight = false;
|
bool pressedRight = false;
|
||||||
QPointF centerPos;
|
// for last up
|
||||||
QPointF lastOffset;
|
QPointF lastOffset;
|
||||||
} m_ctrlSteerWheel;
|
} m_ctrlSteerWheel;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue