Handle PrintScreen and SysReq on Windows

This key requires a bit extra care on Windows. We get wildly
different messages depending on if Alt is pressed or not. The symbol
chosen now follows the standard behaviour on X11.
diff --git a/vncviewer/Viewport.cxx b/vncviewer/Viewport.cxx
index 887195d..66a7841 100644
--- a/vncviewer/Viewport.cxx
+++ b/vncviewer/Viewport.cxx
@@ -695,6 +695,12 @@
     if (isExtended)
       keyCode |= 0x100;
 
+    // VK_SNAPSHOT sends different scan codes depending on the state of
+    // Alt. This means that we can get different scan codes on press and
+    // release. Force it to be something standard.
+    if (vKey == VK_SNAPSHOT)
+      keyCode = 0x137;
+
     keySym = win32_vkey_to_keysym(vKey, isExtended);
     if (keySym == NoSymbol) {
       if (isExtended)
@@ -720,6 +726,8 @@
       keyCode = MapVirtualKey(vKey, MAPVK_VK_TO_VSC);
     if (isExtended)
       keyCode |= 0x100;
+    if (vKey == VK_SNAPSHOT)
+      keyCode = 0x137;
 
     self->handleKeyRelease(keyCode);