@@ -10,7 +10,7 @@
* This controller has a builtin emulation of mouse and keyboard: the right pad
* can be used as a mouse, the shoulder buttons are mouse buttons, A and B
* buttons are ENTER and ESCAPE, and so on. This is implemented as additional
- * HID interfaces.
+ * HID interfaces. Joystick input is blocked when Lizard Mode is active.
*
* This is known as the "lizard mode", because apparently lizards like to use
* the computer from the coach, without a proper mouse and keyboard.
@@ -555,9 +555,6 @@ static int steam_play_effect(struct input_dev *dev, void *data,
static void steam_set_lizard_mode(struct steam_device *steam, bool enable)
{
- if (steam->gamepad_mode)
- enable = false;
-
if (enable) {
mutex_lock(&steam->report_mutex);
/* enable esc, enter, cursors */
@@ -566,6 +563,7 @@ static void steam_set_lizard_mode(struct steam_device *steam, bool enable)
steam_send_report_byte(steam, ID_LOAD_DEFAULT_SETTINGS);
mutex_unlock(&steam->report_mutex);
} else {
+ steam->gamepad_mode = true;
mutex_lock(&steam->report_mutex);
/* disable esc, enter, cursor */
steam_send_report_byte(steam, ID_CLEAR_DIGITAL_MAPPINGS);
@@ -1590,12 +1588,14 @@ static void steam_do_deck_input_event(struct steam_device *steam,
b13 = data[13];
b14 = data[14];
- if (!(b9 & BIT(6)) && steam->did_mode_switch) {
- steam->did_mode_switch = false;
- cancel_delayed_work_sync(&steam->mode_switch);
- } else if (!steam->client_opened && (b9 & BIT(6)) && !steam->did_mode_switch) {
- steam->did_mode_switch = true;
- schedule_delayed_work(&steam->mode_switch, 45 * HZ / 100);
+ if (lizard_mode) {
+ if (!(b9 & BIT(6)) && steam->did_mode_switch) {
+ steam->did_mode_switch = false;
+ cancel_delayed_work_sync(&steam->mode_switch);
+ } else if (!steam->client_opened && (b9 & BIT(6)) && !steam->did_mode_switch) {
+ steam->did_mode_switch = true;
+ schedule_delayed_work(&steam->mode_switch, 45 * HZ / 100);
+ }
}
if (!steam->gamepad_mode)
Disable Lizard Mode by setting the lizard_mode option. Set lizard_mode to 0 to disable switching between Desktop and Gamepad using the Options button, and use Gamepad input. Signed-off-by: Eugeny Shcheglov <eugenyshcheglov@gmail.com> --- drivers/hid/hid-steam.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-)