📄 viewsp.cs
字号:
switch(connOpts.ViewOpts.Orientation)
{
case Orientation.Landscape90:
inputBox.Location = new Point(ClientRectangle.Width - inputBox.Width, 0);
break;
case Orientation.Portrait180:
inputBox.Location = new Point(0, 0);
break;
case Orientation.Landscape270:
inputBox.Location = new Point(0, ClientRectangle.Height - inputBox.Height);
break;
default:
inputBox.Location = new Point(ClientRectangle.Width - inputBox.Width, ClientRectangle.Height - inputBox.Height);
break;
}
inputBox.Visible = true;
inputBox.Enabled = true;
inputBox.Focus();
break;
}
}
protected override void OnKeyUp(KeyEventArgs e)
{
base.OnKeyUp(e);
if(e.Handled)
return;
if(timer.Enabled)
CancelExitFullScrn();
switch(e.KeyCode)
{
case Keys.F1:
leftBtnDown = false;
if(isSetSingleWinPending)
SetSingleWin(mouseX, mouseY);
else
OnMouseEvent(mouseX, mouseY, leftBtnDown, rightBtnDown);
break;
case Keys.F2:
rightBtnDown = false;
if(isSetSingleWinPending)
SetSingleWin(mouseX, mouseY);
else
OnMouseEvent(mouseX, mouseY, leftBtnDown, rightBtnDown);
break;
case Keys.P:
case Keys.Q:
if(!(e.Shift ^ IsCapsLocked()))
{
char c = (e.KeyCode == Keys.P) ? 'p' : 'q';
// Fixing a problem for Smartphones with Qwerty keyboards.
KeyPressEventArgs eventArgs = new KeyPressEventArgs(c);
OnKeyPress(eventArgs);
}
break;
}
}
protected override void OnKeyPress(KeyPressEventArgs e)
{
if(e.Handled)
return;
// On a Smartphone, this means the back soft key.
// Let's treat it as a backspace instead.
if(e.KeyChar == (char)Keys.Escape)
{
e.Handled = true; // Set Handled to true will stop the Smartphone from going to another form.
e = new KeyPressEventArgs('\b');
}
base.OnKeyPress(e);
}
private void ResetInputTimer()
{
// TODO: Which of the following statements are need to reset the timer?
inputTimer.Enabled = false;
inputTimer.Interval = 0;
inputTimer.Interval = InputDelta;
inputTimer.Enabled = true;
}
private void OnInputKeyDown(object sender, KeyEventArgs e)
{
if(e.Handled)
return;
// We don't enable the inputTimer until we get a KeyPress or KeyUp.
inputTimer.Enabled = false;
OnKeyEvent(e.KeyCode, true);
}
private void OnInputKeyUp(object sender, KeyEventArgs e)
{
if(e.Handled)
return;
ResetInputTimer();
if(e.KeyCode != Keys.F8) // Equals F8 after we just opened the text box.
OnKeyEvent(e.KeyCode, false);
}
private void OnInputKeyPress(object sender, KeyPressEventArgs e)
{
if(e.Handled)
return;
ResetInputTimer();
OnKeyPress(e);
}
private void OnInputTextChanged(object sender, EventArgs e)
{
if(inputBox.TextLength > 0)
inputBox.Text = String.Empty;
}
private void ResetMouseIdleTimer()
{
// TODO: Which of the following statements are need to reset the timer?
mouseIdleTimer.Enabled = false;
mouseIdleTimer.Interval = 0;
mouseIdleTimer.Interval = MouseIdleDelta;
mouseIdleTimer.Enabled = true;
}
private void MouseIdleTicked(object sender, EventArgs e)
{
OnMouseEvent(mouseX, mouseY, leftBtnDown, rightBtnDown);
mouseIdleTimer.Enabled = false; // If the cursor moves again, the timer will start again.
}
private void SendMouseLocWhenIdleClicked(object sender, EventArgs e)
{
connOpts.ViewOpts.SendMouseLocWhenIdle = !connOpts.ViewOpts.SendMouseLocWhenIdle;
for(int i = 0; i < optionsMenu.MenuItems.Count; i++)
{
MenuItem item = optionsMenu.MenuItems[i];
if(item.Text == App.GetStr("Send mouse location when idle"))
item.Checked = connOpts.ViewOpts.SendMouseLocWhenIdle;
}
if(connOpts.ViewOpts.SendMouseLocWhenIdle)
ResetMouseIdleTimer();
else
mouseIdleTimer.Enabled = false;
}
private void MouseAccelModeClicked(object sender, EventArgs e)
{
for(int i = 0; i < mouseAccelModeMenu.MenuItems.Count; i++)
mouseAccelModeMenu.MenuItems[i].Checked = false;
MenuItem item = (MenuItem)sender;
item.Checked = true;
if(item == mouseAccelModeMenu.MenuItems[0])
{
connOpts.ViewOpts.MouseAccelMode = true;
connOpts.ViewOpts.MouseSpeed = MouseSpeed.Normal;
}
else if(item == mouseAccelModeMenu.MenuItems[1])
{
connOpts.ViewOpts.MouseAccelMode = false;
connOpts.ViewOpts.MouseSpeed = MouseSpeed.Low;
}
else if(item == mouseAccelModeMenu.MenuItems[2])
{
connOpts.ViewOpts.MouseAccelMode = false;
connOpts.ViewOpts.MouseSpeed = MouseSpeed.Normal;
}
else if(item == mouseAccelModeMenu.MenuItems[3])
{
connOpts.ViewOpts.MouseAccelMode = false;
connOpts.ViewOpts.MouseSpeed = MouseSpeed.High;
}
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Rectangle rect = new Rectangle();
rect.X = mouseX - BigCircleRadius / 2;
rect.Y = mouseY - BigCircleRadius / 2;
rect.Width = BigCircleRadius - 1;
rect.Height = BigCircleRadius - 1;
if(!e.ClipRectangle.IntersectsWith(rect))
return;
Graphics graphics = e.Graphics;
viewPen.Color = App.Red;
graphics.DrawLine(viewPen, rect.Left, mouseY, rect.Right , mouseY);
graphics.DrawLine(viewPen, mouseX, rect.Top, mouseX, rect.Bottom);
}
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
cursorTimer.Enabled = false;
inputTimer.Enabled = false;
mouseIdleTimer.Enabled = false;
}
internal ViewSp(Conn conn, ConnOpts connOpts, UInt16 width, UInt16 height) : base(conn, connOpts, width, height)
{
mouseAccelModeHdr = new EventHandler(MouseAccelModeClicked);
MenuItem item;
MenuItem subItem;
item = new MenuItem();
item.Text = App.GetStr("Left click");
item.Click += new EventHandler(LeftClicked);
menu.MenuItems.Add(item);
item = new MenuItem();
item.Text = App.GetStr("Menu");
menu.MenuItems.Add(item);
subItem = new MenuItem();
subItem.Text = App.GetStr("Right click");
subItem.Click += new EventHandler(RightClicked);
item.MenuItems.Add(subItem);
subItem = new MenuItem();
subItem.Text = "-";
item.MenuItems.Add(subItem);
item.MenuItems.Add(connMenu);
connMenu.MenuItems.Add(newConnItem);
connMenu.MenuItems.Add(refreshItem);
item.MenuItems.Add(viewMenu);
item.MenuItems.Add(keysMenu);
item.MenuItems.Add(optionsMenu);
subItem = new MenuItem();
subItem.Text = App.GetStr("Send mouse location when idle");
subItem.Checked = connOpts.ViewOpts.SendMouseLocWhenIdle;
subItem.Click += new EventHandler(SendMouseLocWhenIdleClicked);
optionsMenu.MenuItems.Add(subItem);
mouseAccelModeMenu.Text = App.GetStr("Mouse speed");
optionsMenu.MenuItems.Add(mouseAccelModeMenu);
subItem = new MenuItem();
subItem.Text = App.GetStr("Acceleration on");
subItem.Checked = connOpts.ViewOpts.MouseAccelMode;
subItem.Click += mouseAccelModeHdr;
mouseAccelModeMenu.MenuItems.Add(subItem);
subItem = new MenuItem();
subItem.Text = App.GetStr("Low");
subItem.Checked = !connOpts.ViewOpts.MouseAccelMode && (connOpts.ViewOpts.MouseSpeed == MouseSpeed.Low);
subItem.Click += mouseAccelModeHdr;
mouseAccelModeMenu.MenuItems.Add(subItem);
subItem = new MenuItem();
subItem.Text = App.GetStr("Normal");
subItem.Checked = !connOpts.ViewOpts.MouseAccelMode && (connOpts.ViewOpts.MouseSpeed == MouseSpeed.Normal);
subItem.Click += mouseAccelModeHdr;
mouseAccelModeMenu.MenuItems.Add(subItem);
subItem = new MenuItem();
subItem.Text = App.GetStr("High");
subItem.Checked = !connOpts.ViewOpts.MouseAccelMode && (connOpts.ViewOpts.MouseSpeed == MouseSpeed.High);
subItem.Click += mouseAccelModeHdr;
mouseAccelModeMenu.MenuItems.Add(subItem);
subItem = new MenuItem();
subItem.Text = "-";
item.MenuItems.Add(subItem);
item.MenuItems.Add(aboutItem);
item.MenuItems.Add(closeConnItem);
cursorTimer.Tick += new EventHandler(CursorTicked);
cursorTimer.Interval = CursorDelta;
cursorTimer.Enabled = true;
mouseIdleTimer.Tick += new EventHandler(MouseIdleTicked);
mouseIdleTimer.Interval = MouseIdleDelta;
mouseIdleTimer.Enabled = connOpts.ViewOpts.SendMouseLocWhenIdle;
Graphics graphics = CreateGraphics();
inputTimer.Tick += new EventHandler(InputTicked);
inputTimer.Interval = InputDelta;
inputBox.Enabled = false;
inputBox.Visible = false;
inputBox.MaxLength = 1;
inputBox.Size = graphics.MeasureString("M", Font).ToSize(); // M should be the widest character
inputBox.Width += App.DialogSpacing; // Give the textbox some more space.
inputBox.TextChanged += new EventHandler(OnInputTextChanged);
inputBox.KeyDown += new KeyEventHandler(OnInputKeyDown);
inputBox.KeyUp += new KeyEventHandler(OnInputKeyUp);
inputBox.KeyPress += new KeyPressEventHandler(OnInputKeyPress);
Controls.Add(inputBox);
graphics.Dispose();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -