summaryrefslogtreecommitdiffstats
path: root/x11vnc/remote.c
diff options
context:
space:
mode:
Diffstat (limited to 'x11vnc/remote.c')
-rw-r--r--x11vnc/remote.c82
1 files changed, 82 insertions, 0 deletions
diff --git a/x11vnc/remote.c b/x11vnc/remote.c
index d8dfa5c..13d8f04 100644
--- a/x11vnc/remote.c
+++ b/x11vnc/remote.c
@@ -3287,6 +3287,9 @@ char *process_remote_cmd(char *cmd, int stringonly) {
goto qry;
}
grab_kbd = 1;
+ if (grab_always) {
+ adjust_grabs(1, 0);
+ }
rfbLog("enabled grab_kbd\n");
} else if (!strcmp(p, "nograbkbd")) {
int orig = grab_kbd;
@@ -3303,12 +3306,16 @@ char *process_remote_cmd(char *cmd, int stringonly) {
#endif
}
rfbLog("disabled grab_kbd\n");
+
} else if (!strcmp(p, "grabptr")) {
if (query) {
snprintf(buf, bufn, "ans=%s:%d", p, grab_ptr);
goto qry;
}
grab_ptr = 1;
+ if (grab_always) {
+ adjust_grabs(1, 0);
+ }
rfbLog("enabled grab_ptr\n");
} else if (!strcmp(p, "nograbptr")) {
int orig = grab_ptr;
@@ -3326,6 +3333,36 @@ char *process_remote_cmd(char *cmd, int stringonly) {
}
rfbLog("disabled grab_ptr\n");
+ } else if (!strcmp(p, "grabalways")) {
+ if (query) {
+ snprintf(buf, bufn, "ans=%s:%d", p, grab_always);
+ goto qry;
+ }
+ grab_ptr = 1;
+ grab_kbd = 1;
+ grab_always = 1;
+ adjust_grabs(1, 0);
+ rfbLog("enabled grab_always\n");
+ } else if (!strcmp(p, "nograbalways")) {
+ int orig = grab_always;
+ if (query) {
+ snprintf(buf, bufn, "ans=%s:%d", p, !grab_always);
+ goto qry;
+ }
+ grab_ptr = 0;
+ grab_kbd = 0;
+ grab_always = 0;
+ if (orig && dpy) {
+#if !NO_X11
+ X_LOCK;
+ XUngrabKeyboard(dpy, CurrentTime);
+ XUngrabPointer(dpy, CurrentTime);
+ X_UNLOCK;
+#endif
+ }
+ adjust_grabs(0, 0);
+ rfbLog("disabled grab_always\n");
+
} else if (strstr(p, "client_input") == p) {
NOTAPP
COLON_CHECK("client_input:")
@@ -3583,6 +3620,51 @@ char *process_remote_cmd(char *cmd, int stringonly) {
rfbLog("remote_cmd: turning on -nodpms mode.\n");
watch_dpms = 1;
+ } else if (!strcmp(p, "clientdpms")) {
+ if (query) {
+ snprintf(buf, bufn, "ans=%s:%d", p, client_dpms);
+ goto qry;
+ }
+ rfbLog("remote_cmd: turning on -clientdpms mode.\n");
+ client_dpms = 1;
+ } else if (!strcmp(p, "noclientdpms")) {
+ if (query) {
+ snprintf(buf, bufn, "ans=%s:%d", p, !client_dpms);
+ goto qry;
+ }
+ rfbLog("remote_cmd: turning off -clientdpms mode.\n");
+ client_dpms = 0;
+
+ } else if (!strcmp(p, "forcedpms")) {
+ if (query) {
+ snprintf(buf, bufn, "ans=%s:%d", p, force_dpms);
+ goto qry;
+ }
+ rfbLog("remote_cmd: turning on -forcedpms mode.\n");
+ force_dpms = 1;
+ } else if (!strcmp(p, "noforcedpms")) {
+ if (query) {
+ snprintf(buf, bufn, "ans=%s:%d", p, !force_dpms);
+ goto qry;
+ }
+ rfbLog("remote_cmd: turning off -forcedpms mode.\n");
+ force_dpms = 0;
+
+ } else if (!strcmp(p, "noserverdpms")) {
+ if (query) {
+ snprintf(buf, bufn, "ans=%s:%d", p, no_ultra_dpms);
+ goto qry;
+ }
+ rfbLog("remote_cmd: turning on -noserverdpms mode.\n");
+ no_ultra_dpms = 1;
+ } else if (!strcmp(p, "serverdpms")) {
+ if (query) {
+ snprintf(buf, bufn, "ans=%s:%d", p, !no_ultra_dpms);
+ goto qry;
+ }
+ rfbLog("remote_cmd: turning off -noserverdpms mode.\n");
+ no_ultra_dpms = 0;
+
} else if (strstr(p, "fs") == p) {
COLON_CHECK("fs:")
if (query) {