Add keyboard input RShift, tilde, "no key up" tokens and debug buttons

These are used to add support for vrc debug commands which I personally wanted to add. Because it's a narrow use case the must be enabled manually by adding vrcDebug = true to [utilitiesSettings] in the OpenVRAdvancedSettings.ini file
This commit is contained in:
Kung-vr
2019-10-01 10:36:04 +09:00
parent 93913b6e94
commit b4dbbe8857
9 changed files with 884 additions and 11 deletions
+4
View File
@@ -308,7 +308,11 @@ bool isModifier( const Token token ) noexcept
[[fallthrough]]; [[fallthrough]];
case Token::MODIFIER_SHIFT: case Token::MODIFIER_SHIFT:
[[fallthrough]]; [[fallthrough]];
case Token::MODIFIER_RSHIFT:
[[fallthrough]];
case Token::MODIFIER_SUPER: case Token::MODIFIER_SUPER:
[[fallthrough]];
case Token::MODIFIER_TILDE:
return true; return true;
default: default:
return false; return false;
+3
View File
@@ -81,12 +81,15 @@ enum class Token
// Misc tokens // Misc tokens
TOKEN_NEW_SEQUENCE, TOKEN_NEW_SEQUENCE,
TOKEN_NO_KEYUP_NEXT,
// Modifiers // Modifiers
MODIFIER_CTRL, MODIFIER_CTRL,
MODIFIER_ALT, MODIFIER_ALT,
MODIFIER_SHIFT, MODIFIER_SHIFT,
MODIFIER_RSHIFT,
MODIFIER_SUPER, MODIFIER_SUPER,
MODIFIER_TILDE,
}; };
std::vector<Token> std::vector<Token>
+25 -2
View File
@@ -151,8 +151,12 @@ unsigned int tokenToKeySym( const Token token )
return XK_Alt_L; return XK_Alt_L;
case Token::MODIFIER_SHIFT: case Token::MODIFIER_SHIFT:
return XK_Shift_L; return XK_Shift_L;
case Token::MODIFIER_RSHIFT:
return XK_Shift_R;
case Token::MODIFIER_SUPER: case Token::MODIFIER_SUPER:
return XK_Super_L; return XK_Super_L;
case Token::MODIFIER_TILDE:
return XK_grave;
default: default:
return 0; return 0;
@@ -182,12 +186,22 @@ void sendTokensAsInput( const std::vector<Token> tokens )
XTestGrabControl( display, True ); XTestGrabControl( display, True );
std::vector<Token> heldInputs = {}; std::vector<Token> heldInputs = {};
bool noKeyUp = false;
for ( const auto& token : tokens ) for ( const auto& token : tokens )
{ {
if ( token == Token::TOKEN_NO_KEYUP_NEXT )
{
noKeyUp = true;
continue;
}
if ( isModifier( token ) ) if ( isModifier( token ) )
{ {
sendKeyPress( token, KeyStatus::Down, display ); sendKeyPress( token, KeyStatus::Down, display );
heldInputs.push_back( token ); if ( noKeyUp )
{
heldInputs.push_back( token );
}
continue; continue;
} }
@@ -204,7 +218,16 @@ void sendTokensAsInput( const std::vector<Token> tokens )
if ( isLiteral( token ) ) if ( isLiteral( token ) )
{ {
sendKeyPress( token, KeyStatus::Down, display ); sendKeyPress( token, KeyStatus::Down, display );
sendKeyPress( token, KeyStatus::Up, display ); if ( noKeyUp )
{
sendKeyPress( token, KeyStatus::Up, display );
}
continue;
}
if ( token != Token::TOKEN_NO_KEYUP_NEXT )
{
noKeyUp = false;
continue; continue;
} }
} }
+48 -9
View File
@@ -82,8 +82,12 @@ WORD convertToVirtualKeycode( const Token token )
return VK_MENU; return VK_MENU;
case Token::MODIFIER_SHIFT: case Token::MODIFIER_SHIFT:
return VK_SHIFT; return VK_SHIFT;
case Token::MODIFIER_RSHIFT:
return VK_RSHIFT;
case Token::MODIFIER_SUPER: case Token::MODIFIER_SUPER:
return VK_LWIN; return VK_LWIN;
case Token::MODIFIER_TILDE:
return VK_OEM_3;
default: default:
return 0; return 0;
@@ -97,15 +101,32 @@ INPUT createInputStruct( const WORD virtualKeyCode,
input.type = INPUT_KEYBOARD; input.type = INPUT_KEYBOARD;
input.ki.wVk = virtualKeyCode; if ( virtualKeyCode == VK_RSHIFT )
{
input.ki.wVk = VK_SHIFT;
input.ki.wScan = 0x36;
if ( keyStatus == KeyStatus::Up ) if ( keyStatus == KeyStatus::Up )
{ {
input.ki.dwFlags = KEYEVENTF_KEYUP; input.ki.dwFlags = KEYEVENTF_KEYUP | KEYEVENTF_SCANCODE;
}
else if ( keyStatus == KeyStatus::Down )
{
input.ki.dwFlags = 0 | KEYEVENTF_SCANCODE;
}
} }
else if ( keyStatus == KeyStatus::Down ) else
{ {
input.ki.dwFlags = 0; input.ki.wVk = virtualKeyCode;
if ( keyStatus == KeyStatus::Up )
{
input.ki.dwFlags = KEYEVENTF_KEYUP;
}
else if ( keyStatus == KeyStatus::Down )
{
input.ki.dwFlags = 0;
}
} }
return input; return input;
@@ -146,13 +167,23 @@ void sendTokensAsInput( const std::vector<Token> tokens )
{ {
std::vector<INPUT> inputs = {}; std::vector<INPUT> inputs = {};
std::vector<Token> heldInputs = {}; std::vector<Token> heldInputs = {};
bool noKeyUp = false;
for ( const auto& token : tokens ) for ( const auto& token : tokens )
{ {
if ( token == Token::TOKEN_NO_KEYUP_NEXT )
{
noKeyUp = true;
continue;
}
if ( isModifier( token ) ) if ( isModifier( token ) )
{ {
inputs.push_back( createInputStruct( inputs.push_back( createInputStruct(
convertToVirtualKeycode( token ), KeyStatus::Down ) ); convertToVirtualKeycode( token ), KeyStatus::Down ) );
heldInputs.push_back( token ); if ( !noKeyUp )
{
heldInputs.push_back( token );
}
continue; continue;
} }
@@ -171,8 +202,16 @@ void sendTokensAsInput( const std::vector<Token> tokens )
{ {
inputs.push_back( createInputStruct( inputs.push_back( createInputStruct(
convertToVirtualKeycode( token ), KeyStatus::Down ) ); convertToVirtualKeycode( token ), KeyStatus::Down ) );
inputs.push_back( createInputStruct( if ( !noKeyUp )
convertToVirtualKeycode( token ), KeyStatus::Up ) ); {
inputs.push_back( createInputStruct(
convertToVirtualKeycode( token ), KeyStatus::Up ) );
}
continue;
}
if ( token != Token::TOKEN_NO_KEYUP_NEXT )
{
noKeyUp = false;
continue; continue;
} }
} }
+180
View File
@@ -56,4 +56,184 @@ void sendKeyboardCtrlV()
sendTokensAsInput( tokens ); sendTokensAsInput( tokens );
} }
void sendKeyboardRShiftTilde1()
{
const auto tokens = std::vector<Token>{
Token::TOKEN_NO_KEYUP_NEXT, Token::MODIFIER_RSHIFT,
Token::TOKEN_NO_KEYUP_NEXT, Token::MODIFIER_TILDE,
Token::TOKEN_NO_KEYUP_NEXT, Token::KEY_1
};
sendTokensAsInput( tokens );
}
void sendKeyboardRShiftTilde2()
{
const auto tokens = std::vector<Token>{
Token::TOKEN_NO_KEYUP_NEXT, Token::MODIFIER_RSHIFT,
Token::TOKEN_NO_KEYUP_NEXT, Token::MODIFIER_TILDE,
Token::TOKEN_NO_KEYUP_NEXT, Token::KEY_2
};
sendTokensAsInput( tokens );
}
void sendKeyboardRShiftTilde3()
{
const auto tokens = std::vector<Token>{
Token::TOKEN_NO_KEYUP_NEXT, Token::MODIFIER_RSHIFT,
Token::TOKEN_NO_KEYUP_NEXT, Token::MODIFIER_TILDE,
Token::TOKEN_NO_KEYUP_NEXT, Token::KEY_3
};
sendTokensAsInput( tokens );
}
void sendKeyboardRShiftTilde4()
{
const auto tokens = std::vector<Token>{
Token::TOKEN_NO_KEYUP_NEXT, Token::MODIFIER_RSHIFT,
Token::TOKEN_NO_KEYUP_NEXT, Token::MODIFIER_TILDE,
Token::TOKEN_NO_KEYUP_NEXT, Token::KEY_4
};
sendTokensAsInput( tokens );
}
void sendKeyboardRShiftTilde5()
{
const auto tokens = std::vector<Token>{
Token::TOKEN_NO_KEYUP_NEXT, Token::MODIFIER_RSHIFT,
Token::TOKEN_NO_KEYUP_NEXT, Token::MODIFIER_TILDE,
Token::TOKEN_NO_KEYUP_NEXT, Token::KEY_5
};
sendTokensAsInput( tokens );
}
void sendKeyboardRShiftTilde6()
{
const auto tokens = std::vector<Token>{
Token::TOKEN_NO_KEYUP_NEXT, Token::MODIFIER_RSHIFT,
Token::TOKEN_NO_KEYUP_NEXT, Token::MODIFIER_TILDE,
Token::TOKEN_NO_KEYUP_NEXT, Token::KEY_6
};
sendTokensAsInput( tokens );
}
void sendKeyboardRShiftTilde7()
{
const auto tokens = std::vector<Token>{
Token::TOKEN_NO_KEYUP_NEXT, Token::MODIFIER_RSHIFT,
Token::TOKEN_NO_KEYUP_NEXT, Token::MODIFIER_TILDE,
Token::TOKEN_NO_KEYUP_NEXT, Token::KEY_7
};
sendTokensAsInput( tokens );
}
void sendKeyboardRShiftTilde8()
{
const auto tokens = std::vector<Token>{
Token::TOKEN_NO_KEYUP_NEXT, Token::MODIFIER_RSHIFT,
Token::TOKEN_NO_KEYUP_NEXT, Token::MODIFIER_TILDE,
Token::TOKEN_NO_KEYUP_NEXT, Token::KEY_8
};
sendTokensAsInput( tokens );
}
void sendKeyboardRShiftTilde9()
{
const auto tokens = std::vector<Token>{
Token::TOKEN_NO_KEYUP_NEXT, Token::MODIFIER_RSHIFT,
Token::TOKEN_NO_KEYUP_NEXT, Token::MODIFIER_TILDE,
Token::TOKEN_NO_KEYUP_NEXT, Token::KEY_9
};
sendTokensAsInput( tokens );
}
void sendKeyboardRShiftTilde0()
{
const auto tokens = std::vector<Token>{
Token::TOKEN_NO_KEYUP_NEXT, Token::MODIFIER_RSHIFT,
Token::TOKEN_NO_KEYUP_NEXT, Token::MODIFIER_TILDE,
Token::TOKEN_NO_KEYUP_NEXT, Token::KEY_0
};
sendTokensAsInput( tokens );
}
void sendKeyboardRShiftTilde1Delayed()
{
const auto tokens = std::vector<Token>{ Token::MODIFIER_RSHIFT,
Token::MODIFIER_TILDE,
Token::KEY_1 };
sendTokensAsInput( tokens );
}
void sendKeyboardRShiftTilde2Delayed()
{
const auto tokens = std::vector<Token>{ Token::MODIFIER_RSHIFT,
Token::MODIFIER_TILDE,
Token::KEY_2 };
sendTokensAsInput( tokens );
}
void sendKeyboardRShiftTilde3Delayed()
{
const auto tokens = std::vector<Token>{ Token::MODIFIER_RSHIFT,
Token::MODIFIER_TILDE,
Token::KEY_3 };
sendTokensAsInput( tokens );
}
void sendKeyboardRShiftTilde4Delayed()
{
const auto tokens = std::vector<Token>{ Token::MODIFIER_RSHIFT,
Token::MODIFIER_TILDE,
Token::KEY_4 };
sendTokensAsInput( tokens );
}
void sendKeyboardRShiftTilde5Delayed()
{
const auto tokens = std::vector<Token>{ Token::MODIFIER_RSHIFT,
Token::MODIFIER_TILDE,
Token::KEY_5 };
sendTokensAsInput( tokens );
}
void sendKeyboardRShiftTilde6Delayed()
{
const auto tokens = std::vector<Token>{ Token::MODIFIER_RSHIFT,
Token::MODIFIER_TILDE,
Token::KEY_6 };
sendTokensAsInput( tokens );
}
void sendKeyboardRShiftTilde7Delayed()
{
const auto tokens = std::vector<Token>{ Token::MODIFIER_RSHIFT,
Token::MODIFIER_TILDE,
Token::KEY_7 };
sendTokensAsInput( tokens );
}
void sendKeyboardRShiftTilde8Delayed()
{
const auto tokens = std::vector<Token>{ Token::MODIFIER_RSHIFT,
Token::MODIFIER_TILDE,
Token::KEY_8 };
sendTokensAsInput( tokens );
}
void sendKeyboardRShiftTilde9Delayed()
{
const auto tokens = std::vector<Token>{ Token::MODIFIER_RSHIFT,
Token::MODIFIER_TILDE,
Token::KEY_9 };
sendTokensAsInput( tokens );
}
void sendKeyboardRShiftTilde0Delayed()
{
const auto tokens = std::vector<Token>{ Token::MODIFIER_RSHIFT,
Token::MODIFIER_TILDE,
Token::KEY_0 };
sendTokensAsInput( tokens );
}
} // namespace keyboardinput } // namespace keyboardinput
+31
View File
@@ -24,4 +24,35 @@ void sendKeyboardAltEnter();
void sendKeyboardCtrlC(); void sendKeyboardCtrlC();
void sendKeyboardCtrlV(); void sendKeyboardCtrlV();
// the following functions are used for debug commands in VRChat
// I (Kung) wanted them personally because they're very hard to
// hit from in VR, but it's a narrow use case for a specific app
// so for now these will only be enabled in the UI via manually
// adding vrcDebug = true to [utilitiesSettings] in
// OpenVRAdvancedSettings.ini
// These just call a thread
void sendKeyboardRShiftTilde1();
void sendKeyboardRShiftTilde2();
void sendKeyboardRShiftTilde3();
void sendKeyboardRShiftTilde4();
void sendKeyboardRShiftTilde5();
void sendKeyboardRShiftTilde6();
void sendKeyboardRShiftTilde7();
void sendKeyboardRShiftTilde8();
void sendKeyboardRShiftTilde9();
void sendKeyboardRShiftTilde0();
// These should be run after a slight delay
void sendKeyboardRShiftTilde1Delayed();
void sendKeyboardRShiftTilde2Delayed();
void sendKeyboardRShiftTilde3Delayed();
void sendKeyboardRShiftTilde4Delayed();
void sendKeyboardRShiftTilde5Delayed();
void sendKeyboardRShiftTilde6Delayed();
void sendKeyboardRShiftTilde7Delayed();
void sendKeyboardRShiftTilde8Delayed();
void sendKeyboardRShiftTilde9Delayed();
void sendKeyboardRShiftTilde0Delayed();
} // namespace keyboardinput } // namespace keyboardinput
@@ -138,8 +138,451 @@ GroupBox {
Layout.fillWidth: true Layout.fillWidth: true
} }
} }
RowLayout {
spacing: 18
Layout.fillWidth: true
id: vrcDebugRow
MyPushButton {
id: rShiftTilde1Button
text: "RSh~1"
Layout.fillWidth: true
onClicked: {
UtilitiesTabController.sendKeyboardRShiftTilde1()
rShiftTilde1Button.enabled = false
rShiftTilde2Button.enabled = false
rShiftTilde3Button.enabled = false
rShiftTilde4Button.enabled = false
rShiftTilde5Button.enabled = false
rShiftTilde6Button.enabled = false
rShiftTilde7Button.enabled = false
rShiftTilde8Button.enabled = false
rShiftTilde9Button.enabled = false
rShiftTilde0Button.enabled = false
timer1.restart()
}
}
MyPushButton {
id: rShiftTilde2Button
text: "RSh~2"
Layout.fillWidth: true
onClicked: {
UtilitiesTabController.sendKeyboardRShiftTilde2()
rShiftTilde1Button.enabled = false
rShiftTilde2Button.enabled = false
rShiftTilde3Button.enabled = false
rShiftTilde4Button.enabled = false
rShiftTilde5Button.enabled = false
rShiftTilde6Button.enabled = false
rShiftTilde7Button.enabled = false
rShiftTilde8Button.enabled = false
rShiftTilde9Button.enabled = false
rShiftTilde0Button.enabled = false
timer2.restart()
}
}
MyPushButton {
id: rShiftTilde3Button
text: "RSh~3"
Layout.fillWidth: true
onClicked: {
UtilitiesTabController.sendKeyboardRShiftTilde3()
rShiftTilde1Button.enabled = false
rShiftTilde2Button.enabled = false
rShiftTilde3Button.enabled = false
rShiftTilde4Button.enabled = false
rShiftTilde5Button.enabled = false
rShiftTilde6Button.enabled = false
rShiftTilde7Button.enabled = false
rShiftTilde8Button.enabled = false
rShiftTilde9Button.enabled = false
rShiftTilde0Button.enabled = false
timer3.restart()
}
}
MyPushButton {
id: rShiftTilde4Button
text: "RSh~4"
Layout.fillWidth: true
onClicked: {
UtilitiesTabController.sendKeyboardRShiftTilde4()
rShiftTilde1Button.enabled = false
rShiftTilde2Button.enabled = false
rShiftTilde3Button.enabled = false
rShiftTilde4Button.enabled = false
rShiftTilde5Button.enabled = false
rShiftTilde6Button.enabled = false
rShiftTilde7Button.enabled = false
rShiftTilde8Button.enabled = false
rShiftTilde9Button.enabled = false
rShiftTilde0Button.enabled = false
timer4.restart()
}
}
MyPushButton {
id: rShiftTilde5Button
text: "RSh~5"
Layout.fillWidth: true
onClicked: {
UtilitiesTabController.sendKeyboardRShiftTilde5()
rShiftTilde1Button.enabled = false
rShiftTilde2Button.enabled = false
rShiftTilde3Button.enabled = false
rShiftTilde4Button.enabled = false
rShiftTilde5Button.enabled = false
rShiftTilde6Button.enabled = false
rShiftTilde7Button.enabled = false
rShiftTilde8Button.enabled = false
rShiftTilde9Button.enabled = false
rShiftTilde0Button.enabled = false
timer5.restart()
}
}
MyPushButton {
id: rShiftTilde6Button
text: "RSh~6"
Layout.fillWidth: true
onClicked: {
UtilitiesTabController.sendKeyboardRShiftTilde6()
rShiftTilde1Button.enabled = false
rShiftTilde2Button.enabled = false
rShiftTilde3Button.enabled = false
rShiftTilde4Button.enabled = false
rShiftTilde5Button.enabled = false
rShiftTilde6Button.enabled = false
rShiftTilde7Button.enabled = false
rShiftTilde8Button.enabled = false
rShiftTilde9Button.enabled = false
rShiftTilde0Button.enabled = false
timer6.restart()
}
}
MyPushButton {
id: rShiftTilde7Button
text: "RSh~7"
Layout.fillWidth: true
onClicked: {
UtilitiesTabController.sendKeyboardRShiftTilde7()
rShiftTilde1Button.enabled = false
rShiftTilde2Button.enabled = false
rShiftTilde3Button.enabled = false
rShiftTilde4Button.enabled = false
rShiftTilde5Button.enabled = false
rShiftTilde6Button.enabled = false
rShiftTilde7Button.enabled = false
rShiftTilde8Button.enabled = false
rShiftTilde9Button.enabled = false
rShiftTilde0Button.enabled = false
timer7.restart()
}
}
MyPushButton {
id: rShiftTilde8Button
text: "RSh~8"
Layout.fillWidth: true
onClicked: {
UtilitiesTabController.sendKeyboardRShiftTilde8()
rShiftTilde1Button.enabled = false
rShiftTilde2Button.enabled = false
rShiftTilde3Button.enabled = false
rShiftTilde4Button.enabled = false
rShiftTilde5Button.enabled = false
rShiftTilde6Button.enabled = false
rShiftTilde7Button.enabled = false
rShiftTilde8Button.enabled = false
rShiftTilde9Button.enabled = false
rShiftTilde0Button.enabled = false
timer8.restart()
}
}
MyPushButton {
id: rShiftTilde9Button
text: "RSh~9"
Layout.fillWidth: true
onClicked: {
UtilitiesTabController.sendKeyboardRShiftTilde9()
rShiftTilde1Button.enabled = false
rShiftTilde2Button.enabled = false
rShiftTilde3Button.enabled = false
rShiftTilde4Button.enabled = false
rShiftTilde5Button.enabled = false
rShiftTilde6Button.enabled = false
rShiftTilde7Button.enabled = false
rShiftTilde8Button.enabled = false
rShiftTilde9Button.enabled = false
rShiftTilde0Button.enabled = false
timer9.restart()
}
}
MyPushButton {
id: rShiftTilde0Button
text: "RSh~0"
Layout.fillWidth: true
onClicked: {
UtilitiesTabController.sendKeyboardRShiftTilde0()
rShiftTilde1Button.enabled = false
rShiftTilde2Button.enabled = false
rShiftTilde3Button.enabled = false
rShiftTilde4Button.enabled = false
rShiftTilde5Button.enabled = false
rShiftTilde6Button.enabled = false
rShiftTilde7Button.enabled = false
rShiftTilde8Button.enabled = false
rShiftTilde9Button.enabled = false
rShiftTilde0Button.enabled = false
timer0.restart()
}
}
Timer {
id: timer1
interval: 50
repeat: false
running: false
triggeredOnStart: false
onTriggered: {
UtilitiesTabController.sendKeyboardRShiftTilde1Delayed()
rShiftTilde1Button.enabled = true
rShiftTilde2Button.enabled = true
rShiftTilde3Button.enabled = true
rShiftTilde4Button.enabled = true
rShiftTilde5Button.enabled = true
rShiftTilde6Button.enabled = true
rShiftTilde7Button.enabled = true
rShiftTilde8Button.enabled = true
rShiftTilde9Button.enabled = true
rShiftTilde0Button.enabled = true
}
}
Timer {
id: timer2
interval: 50
repeat: false
running: false
triggeredOnStart: false
onTriggered: {
UtilitiesTabController.sendKeyboardRShiftTilde2Delayed()
rShiftTilde1Button.enabled = true
rShiftTilde2Button.enabled = true
rShiftTilde3Button.enabled = true
rShiftTilde4Button.enabled = true
rShiftTilde5Button.enabled = true
rShiftTilde6Button.enabled = true
rShiftTilde7Button.enabled = true
rShiftTilde8Button.enabled = true
rShiftTilde9Button.enabled = true
rShiftTilde0Button.enabled = true
}
}
Timer {
id: timer3
interval: 50
repeat: false
running: false
triggeredOnStart: false
onTriggered: {
UtilitiesTabController.sendKeyboardRShiftTilde3Delayed()
rShiftTilde1Button.enabled = true
rShiftTilde2Button.enabled = true
rShiftTilde3Button.enabled = true
rShiftTilde4Button.enabled = true
rShiftTilde5Button.enabled = true
rShiftTilde6Button.enabled = true
rShiftTilde7Button.enabled = true
rShiftTilde8Button.enabled = true
rShiftTilde9Button.enabled = true
rShiftTilde0Button.enabled = true
}
}
Timer {
id: timer4
interval: 50
repeat: false
running: false
triggeredOnStart: false
onTriggered: {
UtilitiesTabController.sendKeyboardRShiftTilde4Delayed()
rShiftTilde1Button.enabled = true
rShiftTilde2Button.enabled = true
rShiftTilde3Button.enabled = true
rShiftTilde4Button.enabled = true
rShiftTilde5Button.enabled = true
rShiftTilde6Button.enabled = true
rShiftTilde7Button.enabled = true
rShiftTilde8Button.enabled = true
rShiftTilde9Button.enabled = true
rShiftTilde0Button.enabled = true
}
}
Timer {
id: timer5
interval: 50
repeat: false
running: false
triggeredOnStart: false
onTriggered: {
UtilitiesTabController.sendKeyboardRShiftTilde5Delayed()
rShiftTilde1Button.enabled = true
rShiftTilde2Button.enabled = true
rShiftTilde3Button.enabled = true
rShiftTilde4Button.enabled = true
rShiftTilde5Button.enabled = true
rShiftTilde6Button.enabled = true
rShiftTilde7Button.enabled = true
rShiftTilde8Button.enabled = true
rShiftTilde9Button.enabled = true
rShiftTilde0Button.enabled = true
}
}
Timer {
id: timer6
interval: 50
repeat: false
running: false
triggeredOnStart: false
onTriggered: {
UtilitiesTabController.sendKeyboardRShiftTilde6Delayed()
rShiftTilde1Button.enabled = true
rShiftTilde2Button.enabled = true
rShiftTilde3Button.enabled = true
rShiftTilde4Button.enabled = true
rShiftTilde5Button.enabled = true
rShiftTilde6Button.enabled = true
rShiftTilde7Button.enabled = true
rShiftTilde8Button.enabled = true
rShiftTilde9Button.enabled = true
rShiftTilde0Button.enabled = true
}
}
Timer {
id: timer7
interval: 50
repeat: false
running: false
triggeredOnStart: false
onTriggered: {
UtilitiesTabController.sendKeyboardRShiftTilde7Delayed()
rShiftTilde1Button.enabled = true
rShiftTilde2Button.enabled = true
rShiftTilde3Button.enabled = true
rShiftTilde4Button.enabled = true
rShiftTilde5Button.enabled = true
rShiftTilde6Button.enabled = true
rShiftTilde7Button.enabled = true
rShiftTilde8Button.enabled = true
rShiftTilde9Button.enabled = true
rShiftTilde0Button.enabled = true
}
}
Timer {
id: timer8
interval: 50
repeat: false
running: false
triggeredOnStart: false
onTriggered: {
UtilitiesTabController.sendKeyboardRShiftTilde8Delayed()
rShiftTilde1Button.enabled = true
rShiftTilde2Button.enabled = true
rShiftTilde3Button.enabled = true
rShiftTilde4Button.enabled = true
rShiftTilde5Button.enabled = true
rShiftTilde6Button.enabled = true
rShiftTilde7Button.enabled = true
rShiftTilde8Button.enabled = true
rShiftTilde9Button.enabled = true
rShiftTilde0Button.enabled = true
}
}
Timer {
id: timer9
interval: 50
repeat: false
running: false
triggeredOnStart: false
onTriggered: {
UtilitiesTabController.sendKeyboardRShiftTilde9Delayed()
rShiftTilde1Button.enabled = true
rShiftTilde2Button.enabled = true
rShiftTilde3Button.enabled = true
rShiftTilde4Button.enabled = true
rShiftTilde5Button.enabled = true
rShiftTilde6Button.enabled = true
rShiftTilde7Button.enabled = true
rShiftTilde8Button.enabled = true
rShiftTilde9Button.enabled = true
rShiftTilde0Button.enabled = true
}
}
Timer {
id: timer0
interval: 50
repeat: false
running: false
triggeredOnStart: false
onTriggered: {
UtilitiesTabController.sendKeyboardRShiftTilde0Delayed()
rShiftTilde1Button.enabled = true
rShiftTilde2Button.enabled = true
rShiftTilde3Button.enabled = true
rShiftTilde4Button.enabled = true
rShiftTilde5Button.enabled = true
rShiftTilde6Button.enabled = true
rShiftTilde7Button.enabled = true
rShiftTilde8Button.enabled = true
rShiftTilde9Button.enabled = true
rShiftTilde0Button.enabled = true
}
}
}
} }
Component.onCompleted: { Component.onCompleted: {
keyboardGroupBox.visible = !OverlayController.desktopMode keyboardGroupBox.visible = !OverlayController.desktopMode
vrcDebugRow.visible = UtilitiesTabController.vrcDebug
}
Connections {
target: UtilitiesTabController
onVrcDebugChanged: {
vrcDebugRow.visible = UtilitiesTabController.vrcDebug
}
} }
} }
@@ -15,11 +15,13 @@ void UtilitiesTabController::initStage1()
settings->beginGroup( "utilitiesSettings" ); settings->beginGroup( "utilitiesSettings" );
auto qAlarmEnabled = settings->value( "alarmEnabled", m_alarmEnabled ); auto qAlarmEnabled = settings->value( "alarmEnabled", m_alarmEnabled );
auto qAlarmIsModal = settings->value( "alarmIsModal", m_alarmIsModal ); auto qAlarmIsModal = settings->value( "alarmIsModal", m_alarmIsModal );
auto qVrcDebug = settings->value( "vrcDebug", m_vrcDebug );
auto qAlarmHour = settings->value( "alarmHour", 0 ); auto qAlarmHour = settings->value( "alarmHour", 0 );
auto qAlarmMinute = settings->value( "alarmMinute", 0 ); auto qAlarmMinute = settings->value( "alarmMinute", 0 );
settings->endGroup(); settings->endGroup();
m_alarmEnabled = qAlarmEnabled.toBool(); m_alarmEnabled = qAlarmEnabled.toBool();
m_alarmIsModal = qAlarmIsModal.toBool(); m_alarmIsModal = qAlarmIsModal.toBool();
m_vrcDebug = qVrcDebug.toBool();
m_alarmTime = QTime( qAlarmHour.toInt(), qAlarmMinute.toInt() ); m_alarmTime = QTime( qAlarmHour.toInt(), qAlarmMinute.toInt() );
} }
@@ -63,6 +65,106 @@ void UtilitiesTabController::sendKeyboardBackspace( const int count )
keyboardinput::sendKeyboardBackspace( count ); keyboardinput::sendKeyboardBackspace( count );
} }
void UtilitiesTabController::sendKeyboardRShiftTilde1()
{
keyboardinput::sendKeyboardRShiftTilde1();
}
void UtilitiesTabController::sendKeyboardRShiftTilde2()
{
keyboardinput::sendKeyboardRShiftTilde2();
}
void UtilitiesTabController::sendKeyboardRShiftTilde3()
{
keyboardinput::sendKeyboardRShiftTilde3();
}
void UtilitiesTabController::sendKeyboardRShiftTilde4()
{
keyboardinput::sendKeyboardRShiftTilde4();
}
void UtilitiesTabController::sendKeyboardRShiftTilde5()
{
keyboardinput::sendKeyboardRShiftTilde5();
}
void UtilitiesTabController::sendKeyboardRShiftTilde6()
{
keyboardinput::sendKeyboardRShiftTilde6();
}
void UtilitiesTabController::sendKeyboardRShiftTilde7()
{
keyboardinput::sendKeyboardRShiftTilde7();
}
void UtilitiesTabController::sendKeyboardRShiftTilde8()
{
keyboardinput::sendKeyboardRShiftTilde8();
}
void UtilitiesTabController::sendKeyboardRShiftTilde9()
{
keyboardinput::sendKeyboardRShiftTilde9();
}
void UtilitiesTabController::sendKeyboardRShiftTilde0()
{
keyboardinput::sendKeyboardRShiftTilde0();
}
void UtilitiesTabController::sendKeyboardRShiftTilde1Delayed()
{
keyboardinput::sendKeyboardRShiftTilde1Delayed();
}
void UtilitiesTabController::sendKeyboardRShiftTilde2Delayed()
{
keyboardinput::sendKeyboardRShiftTilde2Delayed();
}
void UtilitiesTabController::sendKeyboardRShiftTilde3Delayed()
{
keyboardinput::sendKeyboardRShiftTilde3Delayed();
}
void UtilitiesTabController::sendKeyboardRShiftTilde4Delayed()
{
keyboardinput::sendKeyboardRShiftTilde4Delayed();
}
void UtilitiesTabController::sendKeyboardRShiftTilde5Delayed()
{
keyboardinput::sendKeyboardRShiftTilde5Delayed();
}
void UtilitiesTabController::sendKeyboardRShiftTilde6Delayed()
{
keyboardinput::sendKeyboardRShiftTilde6Delayed();
}
void UtilitiesTabController::sendKeyboardRShiftTilde7Delayed()
{
keyboardinput::sendKeyboardRShiftTilde7Delayed();
}
void UtilitiesTabController::sendKeyboardRShiftTilde8Delayed()
{
keyboardinput::sendKeyboardRShiftTilde8Delayed();
}
void UtilitiesTabController::sendKeyboardRShiftTilde9Delayed()
{
keyboardinput::sendKeyboardRShiftTilde9Delayed();
}
void UtilitiesTabController::sendKeyboardRShiftTilde0Delayed()
{
keyboardinput::sendKeyboardRShiftTilde0Delayed();
}
void UtilitiesTabController::sendMediaNextSong() void UtilitiesTabController::sendMediaNextSong()
{ {
keyboardinput::sendMediaNextSong(); keyboardinput::sendMediaNextSong();
@@ -124,6 +226,11 @@ bool UtilitiesTabController::alarmIsModal() const
return m_alarmIsModal; return m_alarmIsModal;
} }
bool UtilitiesTabController::vrcDebug() const
{
return m_vrcDebug;
}
int UtilitiesTabController::alarmTimeHour() const int UtilitiesTabController::alarmTimeHour() const
{ {
return m_alarmTime.hour(); return m_alarmTime.hour();
@@ -169,6 +276,23 @@ void UtilitiesTabController::setAlarmIsModal( bool modal, bool notify )
} }
} }
void UtilitiesTabController::setVrcDebug( bool value, bool notify )
{
if ( m_vrcDebug != value )
{
m_vrcDebug = value;
auto settings = OverlayController::appSettings();
settings->beginGroup( "utilitiesSettings" );
settings->setValue( "vrcDebug", m_vrcDebug );
settings->endGroup();
settings->sync();
if ( notify )
{
emit vrcDebugChanged( m_vrcDebug );
}
}
}
void UtilitiesTabController::setAlarmTimeHour( int hour, bool notify ) void UtilitiesTabController::setAlarmTimeHour( int hour, bool notify )
{ {
if ( m_alarmTime.hour() != hour ) if ( m_alarmTime.hour() != hour )
@@ -22,6 +22,8 @@ class UtilitiesTabController : public QObject
alarmEnabledChanged ) alarmEnabledChanged )
Q_PROPERTY( bool alarmIsModal READ alarmIsModal WRITE setAlarmIsModal NOTIFY Q_PROPERTY( bool alarmIsModal READ alarmIsModal WRITE setAlarmIsModal NOTIFY
alarmIsModalChanged ) alarmIsModalChanged )
Q_PROPERTY(
bool vrcDebug READ vrcDebug WRITE setVrcDebug NOTIFY vrcDebugChanged )
Q_PROPERTY( int alarmTimeHour READ alarmTimeHour WRITE setAlarmTimeHour Q_PROPERTY( int alarmTimeHour READ alarmTimeHour WRITE setAlarmTimeHour
NOTIFY alarmTimeHourChanged ) NOTIFY alarmTimeHourChanged )
Q_PROPERTY( int alarmTimeMinute READ alarmTimeMinute WRITE Q_PROPERTY( int alarmTimeMinute READ alarmTimeMinute WRITE
@@ -34,6 +36,7 @@ private:
bool m_alarmEnabled = false; bool m_alarmEnabled = false;
bool m_alarmIsModal = true; bool m_alarmIsModal = true;
bool m_vrcDebug = false;
QTime m_alarmTime; QTime m_alarmTime;
QTime m_alarmLastCheckTime; QTime m_alarmLastCheckTime;
@@ -50,6 +53,7 @@ public:
bool alarmEnabled() const; bool alarmEnabled() const;
bool alarmIsModal() const; bool alarmIsModal() const;
bool vrcDebug() const;
int alarmTimeHour() const; int alarmTimeHour() const;
int alarmTimeMinute() const; int alarmTimeMinute() const;
@@ -61,6 +65,26 @@ public slots:
void sendKeyboardCtrlC(); void sendKeyboardCtrlC();
void sendKeyboardCtrlV(); void sendKeyboardCtrlV();
void sendKeyboardBackspace( const int count ); void sendKeyboardBackspace( const int count );
void sendKeyboardRShiftTilde1();
void sendKeyboardRShiftTilde2();
void sendKeyboardRShiftTilde3();
void sendKeyboardRShiftTilde4();
void sendKeyboardRShiftTilde5();
void sendKeyboardRShiftTilde6();
void sendKeyboardRShiftTilde7();
void sendKeyboardRShiftTilde8();
void sendKeyboardRShiftTilde9();
void sendKeyboardRShiftTilde0();
void sendKeyboardRShiftTilde1Delayed();
void sendKeyboardRShiftTilde2Delayed();
void sendKeyboardRShiftTilde3Delayed();
void sendKeyboardRShiftTilde4Delayed();
void sendKeyboardRShiftTilde5Delayed();
void sendKeyboardRShiftTilde6Delayed();
void sendKeyboardRShiftTilde7Delayed();
void sendKeyboardRShiftTilde8Delayed();
void sendKeyboardRShiftTilde9Delayed();
void sendKeyboardRShiftTilde0Delayed();
void sendMediaNextSong(); void sendMediaNextSong();
void sendMediaPreviousSong(); void sendMediaPreviousSong();
void sendMediaPausePlay(); void sendMediaPausePlay();
@@ -71,6 +95,7 @@ public slots:
void setAlarmEnabled( bool enabled, bool notify = true ); void setAlarmEnabled( bool enabled, bool notify = true );
void setAlarmIsModal( bool modal, bool notify = true ); void setAlarmIsModal( bool modal, bool notify = true );
void setVrcDebug( bool value, bool notify = true );
void setAlarmTimeHour( int hour, bool notify = true ); void setAlarmTimeHour( int hour, bool notify = true );
void setAlarmTimeMinute( int min, bool notify = true ); void setAlarmTimeMinute( int min, bool notify = true );
void setAlarmTimeToCurrentTime(); void setAlarmTimeToCurrentTime();
@@ -80,6 +105,7 @@ public slots:
signals: signals:
void alarmEnabledChanged( bool enabled ); void alarmEnabledChanged( bool enabled );
void alarmIsModalChanged( bool modal ); void alarmIsModalChanged( bool modal );
void vrcDebugChanged( bool value );
void alarmTimeHourChanged( int hour ); void alarmTimeHourChanged( int hour );
void alarmTimeMinuteChanged( int min ); void alarmTimeMinuteChanged( int min );
}; };