mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-06-26 04:16:18 +00:00
Continued changes to project and altered kbm_help_dialog.h text to QStringLiterals
This commit is contained in:
parent
38f2cdd630
commit
9534458a61
5 changed files with 108 additions and 219 deletions
|
@ -223,8 +223,10 @@ void ParseInputConfig(const std::string game_id = "") {
|
||||||
while (std::getline(file, line)) {
|
while (std::getline(file, line)) {
|
||||||
lineCount++;
|
lineCount++;
|
||||||
|
|
||||||
|
auto line_kpmask = (line.substr(0, 2) == "kp ") ? line.begin() + 2 : line.begin();
|
||||||
|
|
||||||
// Strip the ; and whitespace
|
// Strip the ; and whitespace
|
||||||
line.erase(std::remove_if(line.begin(), line.end(),
|
line.erase(std::remove_if(line_kpmask, line.end(),
|
||||||
[](unsigned char c) { return std::isspace(c); }),
|
[](unsigned char c) { return std::isspace(c); }),
|
||||||
line.end());
|
line.end());
|
||||||
|
|
||||||
|
|
|
@ -144,169 +144,63 @@ void KBMSettings::EnableMappingButtons() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void KBMSettings::SaveKBMConfig(bool CloseOnSave) {
|
void KBMSettings::SaveKBMConfig(bool close_on_save) {
|
||||||
std::string output_string = "", input_string = "";
|
std::string output_string = "", input_string = "";
|
||||||
std::vector<std::string> lines, inputs;
|
std::vector<std::string> lines, inputs;
|
||||||
|
|
||||||
|
// Comment lines for config file
|
||||||
lines.push_back("#Feeling lost? Check out the Help section!");
|
lines.push_back("#Feeling lost? Check out the Help section!");
|
||||||
lines.push_back("");
|
lines.push_back("");
|
||||||
lines.push_back("#Keyboard bindings");
|
lines.push_back("#Keyboard bindings");
|
||||||
lines.push_back("");
|
lines.push_back("");
|
||||||
|
|
||||||
input_string = ui->CrossButton->text().toStdString();
|
// Lambda to reduce repetitive code for mapping buttons to config lines
|
||||||
output_string = "cross";
|
auto add_mapping = [&](const QString& buttonText, const std::string& output_name) {
|
||||||
|
input_string = buttonText.toStdString();
|
||||||
|
output_string = output_name;
|
||||||
lines.push_back(output_string + " = " + input_string);
|
lines.push_back(output_string + " = " + input_string);
|
||||||
if (input_string != "unmapped")
|
if (input_string != "unmapped") {
|
||||||
inputs.push_back(input_string);
|
inputs.push_back(input_string);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
input_string = ui->CircleButton->text().toStdString();
|
add_mapping(ui->CrossButton->text(), "cross");
|
||||||
output_string = "circle";
|
add_mapping(ui->CircleButton->text(), "circle");
|
||||||
lines.push_back(output_string + " = " + input_string);
|
add_mapping(ui->TriangleButton->text(), "triangle");
|
||||||
if (input_string != "unmapped")
|
add_mapping(ui->SquareButton->text(), "square");
|
||||||
inputs.push_back(input_string);
|
|
||||||
|
|
||||||
input_string = ui->TriangleButton->text().toStdString();
|
|
||||||
output_string = "triangle";
|
|
||||||
lines.push_back(output_string + " = " + input_string);
|
|
||||||
if (input_string != "unmapped")
|
|
||||||
inputs.push_back(input_string);
|
|
||||||
|
|
||||||
input_string = ui->SquareButton->text().toStdString();
|
|
||||||
output_string = "square";
|
|
||||||
lines.push_back(output_string + " = " + input_string);
|
|
||||||
if (input_string != "unmapped")
|
|
||||||
inputs.push_back(input_string);
|
|
||||||
|
|
||||||
lines.push_back("");
|
lines.push_back("");
|
||||||
|
|
||||||
input_string = ui->DpadUpButton->text().toStdString();
|
add_mapping(ui->DpadUpButton->text(), "pad_up");
|
||||||
output_string = "pad_up";
|
add_mapping(ui->DpadDownButton->text(), "pad_down");
|
||||||
lines.push_back(output_string + " = " + input_string);
|
add_mapping(ui->DpadLeftButton->text(), "pad_left");
|
||||||
if (input_string != "unmapped")
|
add_mapping(ui->DpadRightButton->text(), "pad_right");
|
||||||
inputs.push_back(input_string);
|
|
||||||
|
|
||||||
input_string = ui->DpadDownButton->text().toStdString();
|
|
||||||
output_string = "pad_down";
|
|
||||||
lines.push_back(output_string + " = " + input_string);
|
|
||||||
if (input_string != "unmapped")
|
|
||||||
inputs.push_back(input_string);
|
|
||||||
|
|
||||||
input_string = ui->DpadLeftButton->text().toStdString();
|
|
||||||
output_string = "pad_left";
|
|
||||||
lines.push_back(output_string + " = " + input_string);
|
|
||||||
if (input_string != "unmapped")
|
|
||||||
inputs.push_back(input_string);
|
|
||||||
|
|
||||||
input_string = ui->DpadRightButton->text().toStdString();
|
|
||||||
output_string = "pad_right";
|
|
||||||
lines.push_back(output_string + " = " + input_string);
|
|
||||||
if (input_string != "unmapped")
|
|
||||||
inputs.push_back(input_string);
|
|
||||||
|
|
||||||
lines.push_back("");
|
lines.push_back("");
|
||||||
|
|
||||||
input_string = ui->L1Button->text().toStdString();
|
add_mapping(ui->L1Button->text(), "l1");
|
||||||
output_string = "l1";
|
add_mapping(ui->R1Button->text(), "r1");
|
||||||
lines.push_back(output_string + " = " + input_string);
|
add_mapping(ui->L2Button->text(), "l2");
|
||||||
if (input_string != "unmapped")
|
add_mapping(ui->R2Button->text(), "r2");
|
||||||
inputs.push_back(input_string);
|
add_mapping(ui->L3Button->text(), "l3");
|
||||||
|
add_mapping(ui->R3Button->text(), "r3");
|
||||||
input_string = ui->R1Button->text().toStdString();
|
|
||||||
output_string = "r1";
|
|
||||||
lines.push_back(output_string + " = " + input_string);
|
|
||||||
if (input_string != "unmapped")
|
|
||||||
inputs.push_back(input_string);
|
|
||||||
|
|
||||||
input_string = ui->L2Button->text().toStdString();
|
|
||||||
output_string = "l2";
|
|
||||||
lines.push_back(output_string + " = " + input_string);
|
|
||||||
if (input_string != "unmapped")
|
|
||||||
inputs.push_back(input_string);
|
|
||||||
|
|
||||||
input_string = ui->R2Button->text().toStdString();
|
|
||||||
output_string = "r2";
|
|
||||||
lines.push_back(output_string + " = " + input_string);
|
|
||||||
if (input_string != "unmapped")
|
|
||||||
inputs.push_back(input_string);
|
|
||||||
|
|
||||||
input_string = ui->L3Button->text().toStdString();
|
|
||||||
output_string = "l3";
|
|
||||||
lines.push_back(output_string + " = " + input_string);
|
|
||||||
if (input_string != "unmapped")
|
|
||||||
inputs.push_back(input_string);
|
|
||||||
|
|
||||||
input_string = ui->R3Button->text().toStdString();
|
|
||||||
output_string = "r3";
|
|
||||||
lines.push_back(output_string + " = " + input_string);
|
|
||||||
if (input_string != "unmapped")
|
|
||||||
inputs.push_back(input_string);
|
|
||||||
|
|
||||||
lines.push_back("");
|
lines.push_back("");
|
||||||
|
|
||||||
input_string = ui->OptionsButton->text().toStdString();
|
add_mapping(ui->OptionsButton->text(), "options");
|
||||||
output_string = "options";
|
add_mapping(ui->TouchpadButton->text(), "touchpad");
|
||||||
lines.push_back(output_string + " = " + input_string);
|
|
||||||
if (input_string != "unmapped")
|
|
||||||
inputs.push_back(input_string);
|
|
||||||
|
|
||||||
input_string = ui->TouchpadButton->text().toStdString();
|
|
||||||
output_string = "touchpad";
|
|
||||||
lines.push_back(output_string + " = " + input_string);
|
|
||||||
if (input_string != "unmapped")
|
|
||||||
inputs.push_back(input_string);
|
|
||||||
|
|
||||||
lines.push_back("");
|
lines.push_back("");
|
||||||
|
|
||||||
input_string = ui->LStickUpButton->text().toStdString();
|
add_mapping(ui->LStickUpButton->text(), "axis_left_y_minus");
|
||||||
output_string = "axis_left_y_minus";
|
add_mapping(ui->LStickDownButton->text(), "axis_left_y_plus");
|
||||||
lines.push_back(output_string + " = " + input_string);
|
add_mapping(ui->LStickLeftButton->text(), "axis_left_x_minus");
|
||||||
if (input_string != "unmapped")
|
add_mapping(ui->LStickRightButton->text(), "axis_left_x_plus");
|
||||||
inputs.push_back(input_string);
|
|
||||||
|
|
||||||
input_string = ui->LStickDownButton->text().toStdString();
|
|
||||||
output_string = "axis_left_y_plus";
|
|
||||||
lines.push_back(output_string + " = " + input_string);
|
|
||||||
if (input_string != "unmapped")
|
|
||||||
inputs.push_back(input_string);
|
|
||||||
|
|
||||||
input_string = ui->LStickLeftButton->text().toStdString();
|
|
||||||
output_string = "axis_left_x_minus";
|
|
||||||
lines.push_back(output_string + " = " + input_string);
|
|
||||||
if (input_string != "unmapped")
|
|
||||||
inputs.push_back(input_string);
|
|
||||||
|
|
||||||
input_string = ui->LStickRightButton->text().toStdString();
|
|
||||||
output_string = "axis_left_x_plus";
|
|
||||||
lines.push_back(output_string + " = " + input_string);
|
|
||||||
if (input_string != "unmapped")
|
|
||||||
inputs.push_back(input_string);
|
|
||||||
|
|
||||||
lines.push_back("");
|
lines.push_back("");
|
||||||
|
|
||||||
input_string = ui->RStickUpButton->text().toStdString();
|
add_mapping(ui->RStickUpButton->text(), "axis_right_y_minus");
|
||||||
output_string = "axis_right_y_minus";
|
add_mapping(ui->RStickDownButton->text(), "axis_right_y_plus");
|
||||||
lines.push_back(output_string + " = " + input_string);
|
add_mapping(ui->RStickLeftButton->text(), "axis_right_x_minus");
|
||||||
if (input_string != "unmapped")
|
add_mapping(ui->RStickRightButton->text(), "axis_right_x_plus");
|
||||||
inputs.push_back(input_string);
|
|
||||||
|
|
||||||
input_string = ui->RStickDownButton->text().toStdString();
|
|
||||||
output_string = "axis_right_y_plus";
|
|
||||||
lines.push_back(output_string + " = " + input_string);
|
|
||||||
if (input_string != "unmapped")
|
|
||||||
inputs.push_back(input_string);
|
|
||||||
|
|
||||||
input_string = ui->RStickLeftButton->text().toStdString();
|
|
||||||
output_string = "axis_right_x_minus";
|
|
||||||
lines.push_back(output_string + " = " + input_string);
|
|
||||||
if (input_string != "unmapped")
|
|
||||||
inputs.push_back(input_string);
|
|
||||||
|
|
||||||
input_string = ui->RStickRightButton->text().toStdString();
|
|
||||||
output_string = "axis_right_x_plus";
|
|
||||||
lines.push_back(output_string + " = " + input_string);
|
|
||||||
if (input_string != "unmapped")
|
|
||||||
inputs.push_back(input_string);
|
|
||||||
|
|
||||||
lines.push_back("");
|
lines.push_back("");
|
||||||
|
|
||||||
input_string = ui->MouseJoystickBox->currentText().toStdString();
|
input_string = ui->MouseJoystickBox->currentText().toStdString();
|
||||||
|
@ -314,17 +208,8 @@ void KBMSettings::SaveKBMConfig(bool CloseOnSave) {
|
||||||
if (input_string != "unmapped")
|
if (input_string != "unmapped")
|
||||||
lines.push_back(output_string + " = " + input_string);
|
lines.push_back(output_string + " = " + input_string);
|
||||||
|
|
||||||
input_string = ui->LHalfButton->text().toStdString();
|
add_mapping(ui->LHalfButton->text(), "leftjoystick_halfmode");
|
||||||
output_string = "leftjoystick_halfmode";
|
add_mapping(ui->RHalfButton->text(), "rightjoystick_halfmode");
|
||||||
lines.push_back(output_string + " = " + input_string);
|
|
||||||
if (input_string != "unmapped")
|
|
||||||
inputs.push_back(input_string);
|
|
||||||
|
|
||||||
input_string = ui->RHalfButton->text().toStdString();
|
|
||||||
output_string = "rightjoystick_halfmode";
|
|
||||||
lines.push_back(output_string + " = " + input_string);
|
|
||||||
if (input_string != "unmapped")
|
|
||||||
inputs.push_back(input_string);
|
|
||||||
|
|
||||||
std::string DOString = std::format("{:.2f}", (ui->DeadzoneOffsetSlider->value() / 100.f));
|
std::string DOString = std::format("{:.2f}", (ui->DeadzoneOffsetSlider->value() / 100.f));
|
||||||
std::string SMString = std::format("{:.1f}", (ui->SpeedMultiplierSlider->value() / 10.f));
|
std::string SMString = std::format("{:.1f}", (ui->SpeedMultiplierSlider->value() / 10.f));
|
||||||
|
@ -398,7 +283,7 @@ void KBMSettings::SaveKBMConfig(bool CloseOnSave) {
|
||||||
Config::SetUseUnifiedInputConfig(!ui->PerGameCheckBox->isChecked());
|
Config::SetUseUnifiedInputConfig(!ui->PerGameCheckBox->isChecked());
|
||||||
Config::save(Common::FS::GetUserPath(Common::FS::PathType::UserDir) / "config.toml");
|
Config::save(Common::FS::GetUserPath(Common::FS::PathType::UserDir) / "config.toml");
|
||||||
|
|
||||||
if (CloseOnSave)
|
if (close_on_save)
|
||||||
QWidget::close();
|
QWidget::close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -645,6 +530,16 @@ void KBMSettings::SetMapping(QString input) {
|
||||||
MappingCompleted = true;
|
MappingCompleted = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Helper lambda to get the modified button text based on the current keyboard modifiers
|
||||||
|
auto GetModifiedButton = [](Qt::KeyboardModifiers modifier,
|
||||||
|
const std::string& m_button, const std::string& n_button) -> QString {
|
||||||
|
if (QApplication::keyboardModifiers() & modifier) {
|
||||||
|
return QString::fromStdString(m_button);
|
||||||
|
} else {
|
||||||
|
return QString::fromStdString(n_button);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
bool KBMSettings::eventFilter(QObject* obj, QEvent* event) {
|
bool KBMSettings::eventFilter(QObject* obj, QEvent* event) {
|
||||||
if (event->type() == QEvent::Close) {
|
if (event->type() == QEvent::Close) {
|
||||||
if (HelpWindowOpen) {
|
if (HelpWindowOpen) {
|
||||||
|
@ -869,13 +764,13 @@ bool KBMSettings::eventFilter(QObject* obj, QEvent* event) {
|
||||||
|
|
||||||
// special keys
|
// special keys
|
||||||
case Qt::Key_Print:
|
case Qt::Key_Print:
|
||||||
pressedKeys.insert("print");
|
pressedKeys.insert("printscreen");
|
||||||
break;
|
break;
|
||||||
case Qt::Key_ScrollLock:
|
case Qt::Key_ScrollLock:
|
||||||
pressedKeys.insert("scrolllock");
|
pressedKeys.insert("scrolllock");
|
||||||
break;
|
break;
|
||||||
case Qt::Key_Pause:
|
case Qt::Key_Pause:
|
||||||
pressedKeys.insert("pause");
|
pressedKeys.insert("pausebreak");
|
||||||
break;
|
break;
|
||||||
case Qt::Key_Backspace:
|
case Qt::Key_Backspace:
|
||||||
pressedKeys.insert("backspace");
|
pressedKeys.insert("backspace");
|
||||||
|
@ -1045,23 +940,4 @@ bool KBMSettings::eventFilter(QObject* obj, QEvent* event) {
|
||||||
return QDialog::eventFilter(obj, event);
|
return QDialog::eventFilter(obj, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
// m_button is modified button name, n_button is normal button name
|
|
||||||
QString KBMSettings::GetModifiedButton(Qt::KeyboardModifiers modifier,
|
|
||||||
std::string m_button, std::string n_button) {
|
|
||||||
if (QApplication::keyboardModifiers() & modifier) {
|
|
||||||
return QString::fromStdString(m_button);
|
|
||||||
} else {
|
|
||||||
return QString::fromStdString(n_button);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// // Lambda version of GetModifiedButton
|
|
||||||
// auto GetModifiedButton = [](Qt::KeyboardModifiers modifier, const std::string& m_button, const std::string& n_button) -> QString {
|
|
||||||
// if (QApplication::keyboardModifiers() & modifier) {
|
|
||||||
// return QString::fromStdString(m_button);
|
|
||||||
// } else {
|
|
||||||
// return QString::fromStdString(n_button);
|
|
||||||
// }
|
|
||||||
// };
|
|
||||||
|
|
||||||
KBMSettings::~KBMSettings() {}
|
KBMSettings::~KBMSettings() {}
|
|
@ -38,8 +38,6 @@ private:
|
||||||
std::shared_ptr<GameInfoClass> m_game_info;
|
std::shared_ptr<GameInfoClass> m_game_info;
|
||||||
|
|
||||||
bool eventFilter(QObject* obj, QEvent* event) override;
|
bool eventFilter(QObject* obj, QEvent* event) override;
|
||||||
QString GetModifiedButton(Qt::KeyboardModifiers modifier,
|
|
||||||
std::string m_button, std::string n_button);
|
|
||||||
void ButtonConnects();
|
void ButtonConnects();
|
||||||
void SetUIValuestoMappings(std::string config_id);
|
void SetUIValuestoMappings(std::string config_id);
|
||||||
void GetGameTitle();
|
void GetGameTitle();
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#include "kbm_help_dialog.h"
|
#include "kbm_help_dialog.h"
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
|
//#include <QString>
|
||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
#include <QGroupBox>
|
#include <QGroupBox>
|
||||||
#include <QHBoxLayout>
|
#include <QHBoxLayout>
|
||||||
|
|
|
@ -43,17 +43,18 @@ private:
|
||||||
bool* help_open_ptr;
|
bool* help_open_ptr;
|
||||||
|
|
||||||
QString quickstart() {
|
QString quickstart() {
|
||||||
return
|
return QStringLiteral(R"(
|
||||||
R"(The keyboard and controller remapping backend, GUI and documentation have been written by kalaposfos
|
The keyboard and controller remapping backend, GUI and documentation have been written by kalaposfos
|
||||||
|
|
||||||
In this section, you will find information about the project, its features and help on setting up your ideal setup.
|
In this section, you will find information about the project, its features and help on setting up your ideal setup.
|
||||||
To view the config file's syntax, check out the Syntax tab, for keybind names, visit Normal Keybinds and Special Bindings, and if you are here to view emulator-wide keybinds, you can find it in the FAQ section.
|
To view the config file's syntax, check out the Syntax tab, for keybind names, visit Normal Keybinds and Special Bindings, and if you are here to view emulator-wide keybinds, you can find it in the FAQ section.
|
||||||
This project started out because I didn't like the original unchangeable keybinds, but rather than waiting for someone else to do it, I implemented this myself. From the default keybinds, you can clearly tell this was a project built for Bloodborne, but ovbiously you can make adjustments however you like.
|
This project started out because I didn't like the original unchangeable keybinds, but rather than waiting for someone else to do it, I implemented this myself. From the default keybinds, you can clearly tell this was a project built for Bloodborne, but ovbiously you can make adjustments however you like.
|
||||||
)";
|
)");
|
||||||
}
|
}
|
||||||
|
|
||||||
QString faq() {
|
QString faq() {
|
||||||
return
|
return QStringLiteral(R"(
|
||||||
R"(Q: What are the emulator-wide keybinds?
|
Q: What are the emulator-wide keybinds?
|
||||||
A: -F12: Triggers Renderdoc capture
|
A: -F12: Triggers Renderdoc capture
|
||||||
-F11: Toggles fullscreen
|
-F11: Toggles fullscreen
|
||||||
-F10: Toggles FPS counter
|
-F10: Toggles FPS counter
|
||||||
|
@ -76,11 +77,12 @@ A: If you're using per-game configs, it's the base from which all new games gene
|
||||||
|
|
||||||
Q: What does the use Per-game Config checkbox do?
|
Q: What does the use Per-game Config checkbox do?
|
||||||
A: It controls whether the config is loaded from CUSAXXXXX.ini for a game, or from default.ini. This way, if you only want to manage one set of bindings, you can do so, but if you want to use a different setup for every game, that's possible as well.
|
A: It controls whether the config is loaded from CUSAXXXXX.ini for a game, or from default.ini. This way, if you only want to manage one set of bindings, you can do so, but if you want to use a different setup for every game, that's possible as well.
|
||||||
)";
|
)");
|
||||||
}
|
}
|
||||||
|
|
||||||
QString syntax() {
|
QString syntax() {
|
||||||
return
|
return QStringLiteral(R"(
|
||||||
R"(This is the full list of currently supported mouse, keyboard and controller inputs, and how to use them.
|
This is the full list of currently supported mouse, keyboard and controller inputs, and how to use them.
|
||||||
Emulator-reserved keys: F1 through F12
|
Emulator-reserved keys: F1 through F12
|
||||||
|
|
||||||
Syntax (aka how a line can look like):
|
Syntax (aka how a line can look like):
|
||||||
|
@ -100,22 +102,31 @@ axis_left_y_minus = w;
|
||||||
You can make a comment line by putting # as the first character.
|
You can make a comment line by putting # as the first character.
|
||||||
Whitespace doesn't matter, <output>=<input>; is just as valid as <output> = <input>;
|
Whitespace doesn't matter, <output>=<input>; is just as valid as <output> = <input>;
|
||||||
';' at the ends of lines is also optional.
|
';' at the ends of lines is also optional.
|
||||||
)";
|
)");
|
||||||
}
|
}
|
||||||
|
|
||||||
QString bindings() {
|
QString bindings() {
|
||||||
return
|
return QStringLiteral(R"(
|
||||||
R"(The following names should be interpreted without the '' around them, and for inputs that have left and right versions, only the left one is shown, but the right can be inferred from that.
|
The following names should be interpreted without the '' around them, and for inputs that have left and right versions, only the left one is shown, but the right can be inferred from that.
|
||||||
Example: 'lshift', 'rshift'
|
Example: 'lshift', 'rshift'
|
||||||
|
|
||||||
Keyboard:
|
Keyboard:
|
||||||
Alphabet: 'a', 'b', ..., 'z'
|
Alphabet:
|
||||||
Numbers: '0', '1', ..., '9'
|
'a', 'b', ..., 'z'
|
||||||
Keypad: 'kp0', kp1', ..., 'kp9', 'kpperiod', 'kpcomma',
|
Numbers:
|
||||||
'kpdivide', 'kpmultiply', 'kpdivide', 'kpplus', 'kpminus', 'kpenter'
|
'0', '1', ..., '9'
|
||||||
Punctuation and misc:
|
Keypad:
|
||||||
'space', 'comma', 'period', 'question', 'semicolon', 'minus', 'plus', 'lparenthesis', 'lbracket', 'lbrace', 'backslash', 'dash',
|
'kp 0', kp 1', ..., 'kp 9',
|
||||||
'enter', 'tab', backspace', 'escape'
|
'kp .', 'kp ,', 'kp /', 'kp *', 'kp -', 'kp +', 'kp =', 'kp enter'
|
||||||
Arrow keys: 'up', 'down', 'left', 'right'
|
Symbols:
|
||||||
|
'`', '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '-', '_', '=', '+', '{', '}', '[', ']', '\', '|',
|
||||||
|
';', ':', ''', '"', ',', '<', '.', '>', '/', '?'
|
||||||
|
Special keys:
|
||||||
|
'escape (text editor only)', 'printscreen', 'scrolllock', 'pausebreak',
|
||||||
|
'backspace', 'insert', 'delete', 'home', 'end', 'pgup', 'pgdown', 'tab',
|
||||||
|
'capslock', 'enter', 'space'
|
||||||
|
Arrow keys:
|
||||||
|
'up', 'down', 'left', 'right'
|
||||||
Modifier keys:
|
Modifier keys:
|
||||||
'lctrl', 'lshift', 'lalt', 'lwin' = 'lmeta' (same input, different names, so if you are not on Windows and don't like calling this the Windows key, there is an alternative)
|
'lctrl', 'lshift', 'lalt', 'lwin' = 'lmeta' (same input, different names, so if you are not on Windows and don't like calling this the Windows key, there is an alternative)
|
||||||
|
|
||||||
|
@ -138,11 +149,12 @@ Controller:
|
||||||
Axes if you bind them to another axis input:
|
Axes if you bind them to another axis input:
|
||||||
'axis_left_x' 'axis_left_y' 'axis_right_x' 'axis_right_y',
|
'axis_left_x' 'axis_left_y' 'axis_right_x' 'axis_right_y',
|
||||||
'l2'
|
'l2'
|
||||||
)";
|
)");
|
||||||
}
|
}
|
||||||
|
|
||||||
QString special() {
|
QString special() {
|
||||||
return
|
return QStringLiteral(R"(
|
||||||
R"(There are some extra bindings you can put into the config file, that don't correspond to a controller input, but rather something else.
|
There are some extra bindings you can put into the config file, that don't correspond to a controller input, but rather something else.
|
||||||
You can find these here, with detailed comments, examples and suggestions for most of them.
|
You can find these here, with detailed comments, examples and suggestions for most of them.
|
||||||
|
|
||||||
'leftjoystick_halfmode' and 'rightjoystick_halfmode' = <key>;
|
'leftjoystick_halfmode' and 'rightjoystick_halfmode' = <key>;
|
||||||
|
@ -171,6 +183,6 @@ You can find these here, with detailed comments, examples and suggestions for mo
|
||||||
Values go from 1 to 127 (no deadzone to max deadzone), first is the inner, second is the outer deadzone
|
Values go from 1 to 127 (no deadzone to max deadzone), first is the inner, second is the outer deadzone
|
||||||
If you only want inner or outer deadzone, set the other to 1 or 127, respectively
|
If you only want inner or outer deadzone, set the other to 1 or 127, respectively
|
||||||
Devices: leftjoystick, rightjoystick, l2, r2
|
Devices: leftjoystick, rightjoystick, l2, r2
|
||||||
)";
|
)");
|
||||||
}
|
}
|
||||||
};
|
};
|
Loading…
Add table
Add a link
Reference in a new issue