mirror of
https://github.com/moonlight-stream/moonlight-embedded.git
synced 2025-07-01 23:35:47 +00:00
Add parameter to disable gamepad mouse emulation
This commit is contained in:
parent
3611f1dd89
commit
81a49e4564
@ -152,6 +152,10 @@ Send quit app request to remote after quitting session
|
|||||||
|
|
||||||
Disable all input processing (view-only mode)
|
Disable all input processing (view-only mode)
|
||||||
|
|
||||||
|
=item B<-nomouseemulation>
|
||||||
|
|
||||||
|
Disable gamepad mouse emulation (activated by long pressing Start button)
|
||||||
|
|
||||||
=item B<-verbose>
|
=item B<-verbose>
|
||||||
|
|
||||||
Enable verbose output
|
Enable verbose output
|
||||||
|
@ -71,6 +71,7 @@ static struct option long_options[] = {
|
|||||||
{"rotate", required_argument, NULL, '3'},
|
{"rotate", required_argument, NULL, '3'},
|
||||||
{"verbose", no_argument, NULL, 'z'},
|
{"verbose", no_argument, NULL, 'z'},
|
||||||
{"debug", no_argument, NULL, 'Z'},
|
{"debug", no_argument, NULL, 'Z'},
|
||||||
|
{"nomouseemulation", no_argument, NULL, '4'},
|
||||||
{0, 0, 0, 0},
|
{0, 0, 0, 0},
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -240,6 +241,9 @@ static void parse_argument(int c, char* value, PCONFIGURATION config) {
|
|||||||
case 'Z':
|
case 'Z':
|
||||||
config->debug_level = 2;
|
config->debug_level = 2;
|
||||||
break;
|
break;
|
||||||
|
case '4':
|
||||||
|
config->mouse_emulation = false;
|
||||||
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
if (config->action == NULL)
|
if (config->action == NULL)
|
||||||
config->action = value;
|
config->action = value;
|
||||||
@ -357,6 +361,7 @@ void config_parse(int argc, char* argv[], PCONFIGURATION config) {
|
|||||||
config->unsupported = true;
|
config->unsupported = true;
|
||||||
config->quitappafter = false;
|
config->quitappafter = false;
|
||||||
config->viewonly = false;
|
config->viewonly = false;
|
||||||
|
config->mouse_emulation = true;
|
||||||
config->rotate = 0;
|
config->rotate = 0;
|
||||||
config->codec = CODEC_UNSPECIFIED;
|
config->codec = CODEC_UNSPECIFIED;
|
||||||
|
|
||||||
@ -376,7 +381,7 @@ void config_parse(int argc, char* argv[], PCONFIGURATION config) {
|
|||||||
} else {
|
} else {
|
||||||
int option_index = 0;
|
int option_index = 0;
|
||||||
int c;
|
int c;
|
||||||
while ((c = getopt_long_only(argc, argv, "-abc:d:efg:h:i:j:k:lm:no:p:q:r:s:tu:v:w:xy", long_options, &option_index)) != -1) {
|
while ((c = getopt_long_only(argc, argv, "-abc:d:efg:h:i:j:k:lm:no:p:q:r:s:tu:v:w:xy4", long_options, &option_index)) != -1) {
|
||||||
parse_argument(c, optarg, config);
|
parse_argument(c, optarg, config);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,6 +43,7 @@ typedef struct _CONFIGURATION {
|
|||||||
bool unsupported;
|
bool unsupported;
|
||||||
bool quitappafter;
|
bool quitappafter;
|
||||||
bool viewonly;
|
bool viewonly;
|
||||||
|
bool mouse_emulation;
|
||||||
char* inputs[MAX_INPUTS];
|
char* inputs[MAX_INPUTS];
|
||||||
int inputsCount;
|
int inputsCount;
|
||||||
enum codecs codec;
|
enum codecs codec;
|
||||||
|
@ -116,6 +116,7 @@ static short* currentAbs;
|
|||||||
static bool* currentReverse;
|
static bool* currentReverse;
|
||||||
|
|
||||||
static bool grabbingDevices;
|
static bool grabbingDevices;
|
||||||
|
static bool mouseEmulationEnabled;
|
||||||
|
|
||||||
static bool waitingToExitOnModifiersUp = false;
|
static bool waitingToExitOnModifiersUp = false;
|
||||||
|
|
||||||
@ -422,7 +423,7 @@ static bool evdev_handle_event(struct input_event *ev, struct input_device *dev)
|
|||||||
} else
|
} else
|
||||||
dev->buttonFlags &= ~gamepadCode;
|
dev->buttonFlags &= ~gamepadCode;
|
||||||
|
|
||||||
if (gamepadCode == PLAY_FLAG && ev->value == 0) {
|
if (mouseEmulationEnabled && gamepadCode == PLAY_FLAG && ev->value == 0) {
|
||||||
struct timeval elapsedTime;
|
struct timeval elapsedTime;
|
||||||
timersub(&ev->time, &dev->btnDownTime, &elapsedTime);
|
timersub(&ev->time, &dev->btnDownTime, &elapsedTime);
|
||||||
int holdTimeMs = elapsedTime.tv_sec * 1000 + elapsedTime.tv_usec / 1000;
|
int holdTimeMs = elapsedTime.tv_sec * 1000 + elapsedTime.tv_usec / 1000;
|
||||||
@ -982,8 +983,9 @@ void evdev_stop() {
|
|||||||
evdev_drain();
|
evdev_drain();
|
||||||
}
|
}
|
||||||
|
|
||||||
void evdev_init() {
|
void evdev_init(bool mouse_emulation_enabled) {
|
||||||
handler = evdev_handle_event;
|
handler = evdev_handle_event;
|
||||||
|
mouseEmulationEnabled = mouse_emulation_enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct input_device* evdev_get_input_device(unsigned short controller_id) {
|
static struct input_device* evdev_get_input_device(unsigned short controller_id) {
|
||||||
|
@ -24,7 +24,7 @@ extern int evdev_gamepads;
|
|||||||
void evdev_create(const char* device, struct mapping* mappings, bool verbose, int rotate);
|
void evdev_create(const char* device, struct mapping* mappings, bool verbose, int rotate);
|
||||||
void evdev_loop();
|
void evdev_loop();
|
||||||
|
|
||||||
void evdev_init();
|
void evdev_init(bool mouse_emulation_enabled);
|
||||||
void evdev_start();
|
void evdev_start();
|
||||||
void evdev_stop();
|
void evdev_stop();
|
||||||
void evdev_map(char* device);
|
void evdev_map(char* device);
|
||||||
|
@ -209,6 +209,7 @@ static void help() {
|
|||||||
printf("\t-nounsupported\t\tDon't stream if resolution is not officially supported by the server\n");
|
printf("\t-nounsupported\t\tDon't stream if resolution is not officially supported by the server\n");
|
||||||
printf("\t-quitappafter\t\tSend quit app request to remote after quitting session\n");
|
printf("\t-quitappafter\t\tSend quit app request to remote after quitting session\n");
|
||||||
printf("\t-viewonly\t\tDisable all input processing (view-only mode)\n");
|
printf("\t-viewonly\t\tDisable all input processing (view-only mode)\n");
|
||||||
|
printf("\t-nomouseemulation\t\tDisable gamepad mouse emulation support (long pressing Start button)\n");
|
||||||
#if defined(HAVE_SDL) || defined(HAVE_X11)
|
#if defined(HAVE_SDL) || defined(HAVE_X11)
|
||||||
printf("\n WM options (SDL and X11 only)\n\n");
|
printf("\n WM options (SDL and X11 only)\n\n");
|
||||||
printf("\t-windowed\t\tDisplay screen in a window\n");
|
printf("\t-windowed\t\tDisplay screen in a window\n");
|
||||||
@ -346,7 +347,7 @@ int main(int argc, char* argv[]) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
udev_init(!inputAdded, mappings, config.debug_level > 0, config.rotate);
|
udev_init(!inputAdded, mappings, config.debug_level > 0, config.rotate);
|
||||||
evdev_init();
|
evdev_init(config.mouse_emulation);
|
||||||
rumble_handler = evdev_rumble;
|
rumble_handler = evdev_rumble;
|
||||||
#ifdef HAVE_LIBCEC
|
#ifdef HAVE_LIBCEC
|
||||||
cec_init();
|
cec_init();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user