Skip to content

Instantly share code, notes, and snippets.

@akeep
Created September 20, 2010 12:32
Show Gist options
  • Save akeep/587834 to your computer and use it in GitHub Desktop.
Save akeep/587834 to your computer and use it in GitHub Desktop.
Patch to add full screen (F9), view only (F10), and view and edit (F11) hotkeys in the TigerVNC unix vncviewer.
diff -r tigervnc-1.0.1.orig/unix/vncviewer/CConn.cxx tigervnc-1.0.1/unix/vncviewer/CConn.cxx
51a52,60
> StringParameter fullScreenKey("FullScreenKey",
> "The key which toggles fullscreen on and off",
> "F9");
> StringParameter viewOnlyKey("ViewOnlyKey",
> "The key which turns on view only mode",
> "F10");
> StringParameter viewEditKey("ViewEditKey",
> "The key which turns off view only mode",
> "F11");
64c73,74
< menuKeysym(0), menu(dpy, this), options(dpy, this), about(dpy), info(dpy),
---
> menuKeysym(0), fullScreenKeysym(0), viewOnlyKeysym(0), viewEditKeysym(0),
> menu(dpy, this), options(dpy, this), about(dpy), info(dpy),
69a80,88
> CharArray fullScreenKeyStr(fullScreenKey.getData());
> fullScreenKeysym = XStringToKeysym(fullScreenKeyStr.buf);
>
> CharArray viewOnlyKeyStr(viewOnlyKey.getData());
> viewOnlyKeysym = XStringToKeysym(viewOnlyKeyStr.buf);
>
> CharArray viewEditKeyStr(viewEditKey.getData());
> viewEditKeysym = XStringToKeysym(viewEditKeyStr.buf);
>
153a173,188
> } else if (ks == fullScreenKeysym && (ev->xkey.state & (ShiftMask|ControlMask)) == 0) {
> if (w == desktop && ev->type == KeyPress) {
> fullScreen = !fullScreen;
> if (viewport) recreateViewport();
> break;
> }
> } else if (ks == viewOnlyKeysym && (ev->xkey.state & (ShiftMask|ControlMask)) == 0) {
> if (w == desktop && ev->type == KeyPress) {
> viewOnly.setParam(true);
> break;
> }
> } else if (ks == viewEditKeysym && (ev->xkey.state & (ShiftMask|ControlMask)) == 0) {
> if (w == desktop && ev->type == KeyPress) {
> viewOnly.setParam(false);
> break;
> }
433,434c468,470
< enum { ID_OPTIONS, ID_INFO, ID_FULLSCREEN, ID_REFRESH, ID_F8, ID_CTRLALTDEL,
< ID_ABOUT, ID_DISMISS, ID_EXIT, ID_NEWCONN, ID_CTRL, ID_ALT };
---
> enum { ID_OPTIONS, ID_INFO, ID_FULLSCREEN, ID_REFRESH, ID_F8, ID_F9, ID_F10,
> ID_F11, ID_CTRLALTDEL, ID_ABOUT, ID_DISMISS, ID_EXIT, ID_NEWCONN,
> ID_CTRL, ID_ALT };
449a486,497
> CharArray fullScreenKeyStr(fullScreenKey.getData());
> CharArray sendFullScreenKey(64);
> snprintf(sendFullScreenKey.buf, 64, _("Send %s"), fullScreenKeyStr.buf);
> menu.addEntry(sendFullScreenKey.buf, ID_F9);
> CharArray viewOnlyKeyStr(viewOnlyKey.getData());
> CharArray sendViewOnlyKey(64);
> snprintf(sendViewOnlyKey.buf, 64, _("Send %s"), viewOnlyKeyStr.buf);
> menu.addEntry(sendViewOnlyKey.buf, ID_F10);
> CharArray viewEditKeyStr(viewEditKey.getData());
> CharArray sendViewEditKey(64);
> snprintf(sendViewEditKey.buf, 64, _("Send %s"), viewEditKeyStr.buf);
> menu.addEntry(sendViewEditKey.buf, ID_F11);
548a597,617
> case ID_F9:
> menu.unmap();
> if (!viewOnly) {
> writer()->keyEvent(fullScreenKeysym, true);
> writer()->keyEvent(fullScreenKeysym, false);
> }
> break;
> case ID_F10:
> menu.unmap();
> if (!viewOnly) {
> writer()->keyEvent(viewOnlyKeysym, true);
> writer()->keyEvent(viewOnlyKeysym, false);
> }
> break;
> case ID_F11:
> menu.unmap();
> if (!viewOnly) {
> writer()->keyEvent(viewEditKeysym, true);
> writer()->keyEvent(viewEditKeysym, false);
> }
> break;
diff -r tigervnc-1.0.1.orig/unix/vncviewer/CConn.h tigervnc-1.0.1/unix/vncviewer/CConn.h
127a128,130
> KeySym fullScreenKeysym;
> KeySym viewOnlyKeysym;
> KeySym viewEditKeysym;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment