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:
@@ -308,7 +308,11 @@ bool isModifier( const Token token ) noexcept
|
||||
[[fallthrough]];
|
||||
case Token::MODIFIER_SHIFT:
|
||||
[[fallthrough]];
|
||||
case Token::MODIFIER_RSHIFT:
|
||||
[[fallthrough]];
|
||||
case Token::MODIFIER_SUPER:
|
||||
[[fallthrough]];
|
||||
case Token::MODIFIER_TILDE:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
|
||||
@@ -81,12 +81,15 @@ enum class Token
|
||||
|
||||
// Misc tokens
|
||||
TOKEN_NEW_SEQUENCE,
|
||||
TOKEN_NO_KEYUP_NEXT,
|
||||
|
||||
// Modifiers
|
||||
MODIFIER_CTRL,
|
||||
MODIFIER_ALT,
|
||||
MODIFIER_SHIFT,
|
||||
MODIFIER_RSHIFT,
|
||||
MODIFIER_SUPER,
|
||||
MODIFIER_TILDE,
|
||||
};
|
||||
|
||||
std::vector<Token>
|
||||
|
||||
@@ -151,8 +151,12 @@ unsigned int tokenToKeySym( const Token token )
|
||||
return XK_Alt_L;
|
||||
case Token::MODIFIER_SHIFT:
|
||||
return XK_Shift_L;
|
||||
case Token::MODIFIER_RSHIFT:
|
||||
return XK_Shift_R;
|
||||
case Token::MODIFIER_SUPER:
|
||||
return XK_Super_L;
|
||||
case Token::MODIFIER_TILDE:
|
||||
return XK_grave;
|
||||
|
||||
default:
|
||||
return 0;
|
||||
@@ -182,12 +186,22 @@ void sendTokensAsInput( const std::vector<Token> tokens )
|
||||
XTestGrabControl( display, True );
|
||||
|
||||
std::vector<Token> heldInputs = {};
|
||||
bool noKeyUp = false;
|
||||
for ( const auto& token : tokens )
|
||||
{
|
||||
if ( token == Token::TOKEN_NO_KEYUP_NEXT )
|
||||
{
|
||||
noKeyUp = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( isModifier( token ) )
|
||||
{
|
||||
sendKeyPress( token, KeyStatus::Down, display );
|
||||
heldInputs.push_back( token );
|
||||
if ( noKeyUp )
|
||||
{
|
||||
heldInputs.push_back( token );
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -204,7 +218,16 @@ void sendTokensAsInput( const std::vector<Token> tokens )
|
||||
if ( isLiteral( token ) )
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -82,8 +82,12 @@ WORD convertToVirtualKeycode( const Token token )
|
||||
return VK_MENU;
|
||||
case Token::MODIFIER_SHIFT:
|
||||
return VK_SHIFT;
|
||||
case Token::MODIFIER_RSHIFT:
|
||||
return VK_RSHIFT;
|
||||
case Token::MODIFIER_SUPER:
|
||||
return VK_LWIN;
|
||||
case Token::MODIFIER_TILDE:
|
||||
return VK_OEM_3;
|
||||
|
||||
default:
|
||||
return 0;
|
||||
@@ -97,15 +101,32 @@ INPUT createInputStruct( const WORD virtualKeyCode,
|
||||
|
||||
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 )
|
||||
{
|
||||
input.ki.dwFlags = KEYEVENTF_KEYUP;
|
||||
if ( keyStatus == KeyStatus::Up )
|
||||
{
|
||||
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;
|
||||
@@ -146,13 +167,23 @@ void sendTokensAsInput( const std::vector<Token> tokens )
|
||||
{
|
||||
std::vector<INPUT> inputs = {};
|
||||
std::vector<Token> heldInputs = {};
|
||||
bool noKeyUp = false;
|
||||
for ( const auto& token : tokens )
|
||||
{
|
||||
if ( token == Token::TOKEN_NO_KEYUP_NEXT )
|
||||
{
|
||||
noKeyUp = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( isModifier( token ) )
|
||||
{
|
||||
inputs.push_back( createInputStruct(
|
||||
convertToVirtualKeycode( token ), KeyStatus::Down ) );
|
||||
heldInputs.push_back( token );
|
||||
if ( !noKeyUp )
|
||||
{
|
||||
heldInputs.push_back( token );
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -171,8 +202,16 @@ void sendTokensAsInput( const std::vector<Token> tokens )
|
||||
{
|
||||
inputs.push_back( createInputStruct(
|
||||
convertToVirtualKeycode( token ), KeyStatus::Down ) );
|
||||
inputs.push_back( createInputStruct(
|
||||
convertToVirtualKeycode( token ), KeyStatus::Up ) );
|
||||
if ( !noKeyUp )
|
||||
{
|
||||
inputs.push_back( createInputStruct(
|
||||
convertToVirtualKeycode( token ), KeyStatus::Up ) );
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if ( token != Token::TOKEN_NO_KEYUP_NEXT )
|
||||
{
|
||||
noKeyUp = false;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,4 +56,184 @@ void sendKeyboardCtrlV()
|
||||
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
|
||||
|
||||
@@ -24,4 +24,35 @@ void sendKeyboardAltEnter();
|
||||
void sendKeyboardCtrlC();
|
||||
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
|
||||
|
||||
@@ -138,8 +138,451 @@ GroupBox {
|
||||
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: {
|
||||
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" );
|
||||
auto qAlarmEnabled = settings->value( "alarmEnabled", m_alarmEnabled );
|
||||
auto qAlarmIsModal = settings->value( "alarmIsModal", m_alarmIsModal );
|
||||
auto qVrcDebug = settings->value( "vrcDebug", m_vrcDebug );
|
||||
auto qAlarmHour = settings->value( "alarmHour", 0 );
|
||||
auto qAlarmMinute = settings->value( "alarmMinute", 0 );
|
||||
settings->endGroup();
|
||||
m_alarmEnabled = qAlarmEnabled.toBool();
|
||||
m_alarmIsModal = qAlarmIsModal.toBool();
|
||||
m_vrcDebug = qVrcDebug.toBool();
|
||||
m_alarmTime = QTime( qAlarmHour.toInt(), qAlarmMinute.toInt() );
|
||||
}
|
||||
|
||||
@@ -63,6 +65,106 @@ void UtilitiesTabController::sendKeyboardBackspace( const int 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()
|
||||
{
|
||||
keyboardinput::sendMediaNextSong();
|
||||
@@ -124,6 +226,11 @@ bool UtilitiesTabController::alarmIsModal() const
|
||||
return m_alarmIsModal;
|
||||
}
|
||||
|
||||
bool UtilitiesTabController::vrcDebug() const
|
||||
{
|
||||
return m_vrcDebug;
|
||||
}
|
||||
|
||||
int UtilitiesTabController::alarmTimeHour() const
|
||||
{
|
||||
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 )
|
||||
{
|
||||
if ( m_alarmTime.hour() != hour )
|
||||
|
||||
@@ -22,6 +22,8 @@ class UtilitiesTabController : public QObject
|
||||
alarmEnabledChanged )
|
||||
Q_PROPERTY( bool alarmIsModal READ alarmIsModal WRITE setAlarmIsModal NOTIFY
|
||||
alarmIsModalChanged )
|
||||
Q_PROPERTY(
|
||||
bool vrcDebug READ vrcDebug WRITE setVrcDebug NOTIFY vrcDebugChanged )
|
||||
Q_PROPERTY( int alarmTimeHour READ alarmTimeHour WRITE setAlarmTimeHour
|
||||
NOTIFY alarmTimeHourChanged )
|
||||
Q_PROPERTY( int alarmTimeMinute READ alarmTimeMinute WRITE
|
||||
@@ -34,6 +36,7 @@ private:
|
||||
|
||||
bool m_alarmEnabled = false;
|
||||
bool m_alarmIsModal = true;
|
||||
bool m_vrcDebug = false;
|
||||
QTime m_alarmTime;
|
||||
QTime m_alarmLastCheckTime;
|
||||
|
||||
@@ -50,6 +53,7 @@ public:
|
||||
|
||||
bool alarmEnabled() const;
|
||||
bool alarmIsModal() const;
|
||||
bool vrcDebug() const;
|
||||
int alarmTimeHour() const;
|
||||
int alarmTimeMinute() const;
|
||||
|
||||
@@ -61,6 +65,26 @@ public slots:
|
||||
void sendKeyboardCtrlC();
|
||||
void sendKeyboardCtrlV();
|
||||
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 sendMediaPreviousSong();
|
||||
void sendMediaPausePlay();
|
||||
@@ -71,6 +95,7 @@ public slots:
|
||||
|
||||
void setAlarmEnabled( bool enabled, 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 setAlarmTimeMinute( int min, bool notify = true );
|
||||
void setAlarmTimeToCurrentTime();
|
||||
@@ -80,6 +105,7 @@ public slots:
|
||||
signals:
|
||||
void alarmEnabledChanged( bool enabled );
|
||||
void alarmIsModalChanged( bool modal );
|
||||
void vrcDebugChanged( bool value );
|
||||
void alarmTimeHourChanged( int hour );
|
||||
void alarmTimeMinuteChanged( int min );
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user