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);
        }