Changed key handler to make it possible to specify pixel-exact locations.

git-svn-id: http://svn.code.sf.net/p/greenshot/code/trunk@2336 7dccd23d-a4a3-4e1f-8c07-b4c1b4018ab4
This commit is contained in:
RKrom 2012-11-29 16:51:41 +00:00
parent 3a9abafdc8
commit bc6b7c36e4

View file

@ -194,31 +194,56 @@ namespace Greenshot.Forms {
} }
} }
/// <summary>
/// Handle the key down event
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void CaptureFormKeyDown(object sender, KeyEventArgs e) { void CaptureFormKeyDown(object sender, KeyEventArgs e) {
// Check fixmode switch (e.KeyCode) {
if (e.KeyCode == Keys.ShiftKey) { case Keys.Up:
Cursor.Position = new Point(Cursor.Position.X, Cursor.Position.Y - 1);
break;
case Keys.Down:
Cursor.Position = new Point(Cursor.Position.X, Cursor.Position.Y + 1);
break;
case Keys.Left:
Cursor.Position = new Point(Cursor.Position.X - 1, Cursor.Position.Y);
break;
case Keys.Right:
Cursor.Position = new Point(Cursor.Position.X + 1, Cursor.Position.Y);
break;
case Keys.ShiftKey:
// Fixmode
if (fixMode == FixMode.None) { if (fixMode == FixMode.None) {
fixMode = FixMode.Initiated; fixMode = FixMode.Initiated;
return; return;
} }
} break;
if (e.KeyCode == Keys.Escape) { case Keys.Escape:
// Cancel
DialogResult = DialogResult.Cancel; DialogResult = DialogResult.Cancel;
} else if (e.KeyCode == Keys.M) { break;
case Keys.M:
// Toggle mouse cursor // Toggle mouse cursor
capture.CursorVisible = !capture.CursorVisible; capture.CursorVisible = !capture.CursorVisible;
Invalidate(); Invalidate();
} else if (e.KeyCode == Keys.V) { break;
case Keys.V:
// Video
if (capture.CaptureDetails.CaptureMode != CaptureMode.Video) { if (capture.CaptureDetails.CaptureMode != CaptureMode.Video) {
capture.CaptureDetails.CaptureMode = CaptureMode.Video; capture.CaptureDetails.CaptureMode = CaptureMode.Video;
} else { } else {
capture.CaptureDetails.CaptureMode = captureMode; capture.CaptureDetails.CaptureMode = captureMode;
} }
Invalidate(); Invalidate();
} else if (e.KeyCode == Keys.Z) { break;
case Keys.Z:
// Toggle zoom // Toggle zoom
isZooming = !isZooming; isZooming = !isZooming;
} else if (e.KeyCode == Keys.Space) { break;
case Keys.Space:
// Toggle capture mode
switch (captureMode) { switch (captureMode) {
case CaptureMode.Region: case CaptureMode.Region:
captureMode = CaptureMode.Window; captureMode = CaptureMode.Window;
@ -230,9 +255,14 @@ namespace Greenshot.Forms {
Invalidate(); Invalidate();
selectedCaptureWindow = null; selectedCaptureWindow = null;
OnMouseMove(this, new MouseEventArgs(MouseButtons.None, 0, Cursor.Position.X, Cursor.Position.Y, 0)); OnMouseMove(this, new MouseEventArgs(MouseButtons.None, 0, Cursor.Position.X, Cursor.Position.Y, 0));
} else if (e.KeyCode == Keys.Return && captureMode == CaptureMode.Window) { break;
case Keys.Return:
// Confirm
if (captureMode == CaptureMode.Window) {
DialogResult = DialogResult.OK; DialogResult = DialogResult.OK;
} }
break;
}
} }
#endregion #endregion