private void WriteKey(Key key, bool pressed, bool logging) { if (rfb != null && !viewonly && rfb.Reader != null) { uint keysyn = 0; try { if (key == Key.RightShift) { shift = pressed; } if (key == Key.LeftShift) { shift = pressed; } if (key == Key.RightCtrl) { ctrl = pressed; } if (key == Key.LeftCtrl) { ctrl = pressed; } if (key == Key.RightAlt) { ctrl = pressed; alt = pressed; } if (key == Key.LeftAlt) { alt = pressed; } if (alt && ctrl) { keytable.AltCtlKeys.TryGetValue(key, out keysyn); } if (shift && keysyn == 0) { keytable.ShiftKeys.TryGetValue(key, out keysyn); } if (keysyn == 0) { keytable.NomodKeys.TryGetValue(key, out keysyn); } if (keysyn != 0) { rfb.WriteKeyEvent(keysyn, pressed); if (logging) { Log.Debug("Key" + (pressed?"Down":"Up") + " Key=" + key + " Code=" + keysyn); } } else { Log.Info("Unhandled keymapping: " + key); } } catch (Exception e) { Log.Info("Exception in WriteKey:" + e.Message); } } }
// Let all exceptions get caught in VncClient public void WriteKeyboardEvent(uint keysym, bool pressed) { rfb.WriteKeyEvent(keysym, pressed); }