Input: Mouse capture mode fixes/improvements
This commit is contained in:
parent
8a137ba72e
commit
b69071497a
13 changed files with 36 additions and 12 deletions
|
@ -79,12 +79,10 @@ MouseMovement KeyManager::GetMouseMovement(double mouseSensitivity)
|
||||||
{
|
{
|
||||||
double factor = EmulationSettings::GetVideoScale() / mouseSensitivity;
|
double factor = EmulationSettings::GetVideoScale() / mouseSensitivity;
|
||||||
MouseMovement mov;
|
MouseMovement mov;
|
||||||
int16_t x = _xMouseMovement;
|
mov.dx = (int16_t)(_xMouseMovement / factor);
|
||||||
int16_t y = _yMouseMovement;
|
mov.dy = (int16_t)(_yMouseMovement / factor);
|
||||||
mov.dx = (int16_t)(x / factor);
|
_xMouseMovement -= (int16_t)(mov.dx * factor);
|
||||||
mov.dy = (int16_t)(y/ factor);
|
_yMouseMovement -= (int16_t)(mov.dy * factor);
|
||||||
_xMouseMovement -= x;
|
|
||||||
_yMouseMovement -= y;
|
|
||||||
|
|
||||||
return mov;
|
return mov;
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using Mesen.GUI.Config;
|
using Mesen.GUI.Config;
|
||||||
|
using Mesen.GUI.Forms;
|
||||||
|
|
||||||
namespace Mesen.GUI
|
namespace Mesen.GUI
|
||||||
{
|
{
|
||||||
|
@ -157,6 +158,9 @@ namespace Mesen.GUI
|
||||||
public static void CaptureMouse()
|
public static void CaptureMouse()
|
||||||
{
|
{
|
||||||
if(AllowMouseCapture) {
|
if(AllowMouseCapture) {
|
||||||
|
if(!_mouseCaptured) {
|
||||||
|
InteropEmu.DisplayMessage("Input", ResourceHelper.GetMessage("MouseModeEnabled"));
|
||||||
|
}
|
||||||
_mouseCaptured = true;
|
_mouseCaptured = true;
|
||||||
HideMouse();
|
HideMouse();
|
||||||
Form frm = Application.OpenForms[0];
|
Form frm = Application.OpenForms[0];
|
||||||
|
|
|
@ -677,6 +677,8 @@
|
||||||
<Message ID="ClearHistory">Esborra el registre</Message>
|
<Message ID="ClearHistory">Esborra el registre</Message>
|
||||||
<Message ID="LastFolderUsed">Darrera carpeta utilitzada</Message>
|
<Message ID="LastFolderUsed">Darrera carpeta utilitzada</Message>
|
||||||
|
|
||||||
|
<Message ID="MouseModeEnabled">Mouse mode enabled - press ESC or pause to release the cursor.</Message>
|
||||||
|
|
||||||
<Message ID="Resume">Continua</Message>
|
<Message ID="Resume">Continua</Message>
|
||||||
<Message ID="Pause">Pausa</Message>
|
<Message ID="Pause">Pausa</Message>
|
||||||
<Message ID="StartServer">Inicia un servidor</Message>
|
<Message ID="StartServer">Inicia un servidor</Message>
|
||||||
|
|
|
@ -19,6 +19,8 @@
|
||||||
<Message ID="ClearHistory">Clear History</Message>
|
<Message ID="ClearHistory">Clear History</Message>
|
||||||
<Message ID="LastFolderUsed">Last Folder Used</Message>
|
<Message ID="LastFolderUsed">Last Folder Used</Message>
|
||||||
|
|
||||||
|
<Message ID="MouseModeEnabled">Mouse mode enabled - press ESC or pause to release the cursor.</Message>
|
||||||
|
|
||||||
<Message ID="Resume">Resume</Message>
|
<Message ID="Resume">Resume</Message>
|
||||||
<Message ID="Pause">Pause</Message>
|
<Message ID="Pause">Pause</Message>
|
||||||
<Message ID="StartServer">Start Server</Message>
|
<Message ID="StartServer">Start Server</Message>
|
||||||
|
|
|
@ -695,6 +695,8 @@
|
||||||
<Message ID="ClearHistory">Limpiar historial</Message>
|
<Message ID="ClearHistory">Limpiar historial</Message>
|
||||||
<Message ID="LastFolderUsed">Última carpeta usada</Message>
|
<Message ID="LastFolderUsed">Última carpeta usada</Message>
|
||||||
|
|
||||||
|
<Message ID="MouseModeEnabled">Mouse mode enabled - press ESC or pause to release the cursor.</Message>
|
||||||
|
|
||||||
<Message ID="Resume">Continuar</Message>
|
<Message ID="Resume">Continuar</Message>
|
||||||
<Message ID="Pause">Pausa</Message>
|
<Message ID="Pause">Pausa</Message>
|
||||||
<Message ID="StartServer">Iniciar servidor</Message>
|
<Message ID="StartServer">Iniciar servidor</Message>
|
||||||
|
|
|
@ -706,7 +706,9 @@
|
||||||
|
|
||||||
<Message ID="ClearHistory">Effacer l'historique</Message>
|
<Message ID="ClearHistory">Effacer l'historique</Message>
|
||||||
<Message ID="LastFolderUsed">Dernier dossier utilisé</Message>
|
<Message ID="LastFolderUsed">Dernier dossier utilisé</Message>
|
||||||
|
|
||||||
|
<Message ID="MouseModeEnabled">Mode souris activé - appuyez sur ESC ou pause pour y mettre fin.</Message>
|
||||||
|
|
||||||
<Message ID="Resume">Continuer</Message>
|
<Message ID="Resume">Continuer</Message>
|
||||||
<Message ID="Pause">Pause</Message>
|
<Message ID="Pause">Pause</Message>
|
||||||
<Message ID="StartServer">Démarrer serveur</Message>
|
<Message ID="StartServer">Démarrer serveur</Message>
|
||||||
|
|
|
@ -690,7 +690,9 @@
|
||||||
|
|
||||||
<Message ID="ClearHistory">履歴を消去</Message>
|
<Message ID="ClearHistory">履歴を消去</Message>
|
||||||
<Message ID="LastFolderUsed">最後に使用したフォルダ</Message>
|
<Message ID="LastFolderUsed">最後に使用したフォルダ</Message>
|
||||||
|
|
||||||
|
<Message ID="MouseModeEnabled">マウスモード有効。 無効にするにはESCやポースボタンを使ってください。</Message>
|
||||||
|
|
||||||
<Message ID="Resume">再開</Message>
|
<Message ID="Resume">再開</Message>
|
||||||
<Message ID="Pause">ポーズ</Message>
|
<Message ID="Pause">ポーズ</Message>
|
||||||
<Message ID="StartServer">サーバを起動する</Message>
|
<Message ID="StartServer">サーバを起動する</Message>
|
||||||
|
|
|
@ -693,6 +693,8 @@
|
||||||
<Message ID="ClearHistory">Limpar histórico</Message>
|
<Message ID="ClearHistory">Limpar histórico</Message>
|
||||||
<Message ID="LastFolderUsed">Última pasta usada</Message>
|
<Message ID="LastFolderUsed">Última pasta usada</Message>
|
||||||
|
|
||||||
|
<Message ID="MouseModeEnabled">Mouse mode enabled - press ESC or pause to release the cursor.</Message>
|
||||||
|
|
||||||
<Message ID="Resume">Continuar</Message>
|
<Message ID="Resume">Continuar</Message>
|
||||||
<Message ID="Pause">Pausar</Message>
|
<Message ID="Pause">Pausar</Message>
|
||||||
<Message ID="StartServer">Iniciar servidor</Message>
|
<Message ID="StartServer">Iniciar servidor</Message>
|
||||||
|
|
|
@ -695,6 +695,8 @@
|
||||||
|
|
||||||
<Message ID="ClearHistory">Clear History</Message>
|
<Message ID="ClearHistory">Clear History</Message>
|
||||||
<Message ID="LastFolderUsed">Last Folder Used</Message>
|
<Message ID="LastFolderUsed">Last Folder Used</Message>
|
||||||
|
|
||||||
|
<Message ID="MouseModeEnabled">Mouse mode enabled - press ESC or pause to release the cursor.</Message>
|
||||||
|
|
||||||
<Message ID="Resume">Продолжить</Message>
|
<Message ID="Resume">Продолжить</Message>
|
||||||
<Message ID="Pause">Пауза</Message>
|
<Message ID="Pause">Пауза</Message>
|
||||||
|
|
|
@ -695,6 +695,8 @@
|
||||||
|
|
||||||
<Message ID="ClearHistory">Очистити історію</Message>
|
<Message ID="ClearHistory">Очистити історію</Message>
|
||||||
<Message ID="LastFolderUsed">Використовувана остання папка</Message>
|
<Message ID="LastFolderUsed">Використовувана остання папка</Message>
|
||||||
|
|
||||||
|
<Message ID="MouseModeEnabled">Mouse mode enabled - press ESC or pause to release the cursor.</Message>
|
||||||
|
|
||||||
<Message ID="Resume">Продовжити</Message>
|
<Message ID="Resume">Продовжити</Message>
|
||||||
<Message ID="Pause">Пауза</Message>
|
<Message ID="Pause">Пауза</Message>
|
||||||
|
|
|
@ -30,6 +30,15 @@ namespace Mesen.GUI.Forms
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
|
||||||
|
{
|
||||||
|
if(keyData == Keys.Escape) {
|
||||||
|
CursorManager.ReleaseMouse();
|
||||||
|
}
|
||||||
|
|
||||||
|
return base.ProcessCmdKey(ref msg, keyData);
|
||||||
|
}
|
||||||
|
|
||||||
bool IMessageFilter.PreFilterMessage(ref Message m)
|
bool IMessageFilter.PreFilterMessage(ref Message m)
|
||||||
{
|
{
|
||||||
if(this.ContainsFocus) {
|
if(this.ContainsFocus) {
|
||||||
|
|
|
@ -43,6 +43,7 @@ namespace Mesen.GUI.Forms
|
||||||
protected override void OnMouseDown(MouseEventArgs e)
|
protected override void OnMouseDown(MouseEventArgs e)
|
||||||
{
|
{
|
||||||
base.OnMouseDown(e);
|
base.OnMouseDown(e);
|
||||||
|
CursorManager.CaptureMouse();
|
||||||
SetMouseButtonState(Control.MouseButtons);
|
SetMouseButtonState(Control.MouseButtons);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1003,10 +1003,6 @@ namespace Mesen.GUI.Forms
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(keyData == Keys.Escape) {
|
|
||||||
CursorManager.ReleaseMouse();
|
|
||||||
}
|
|
||||||
|
|
||||||
if(this.HideMenuStrip && (keyData & Keys.Alt) == Keys.Alt) {
|
if(this.HideMenuStrip && (keyData & Keys.Alt) == Keys.Alt) {
|
||||||
if(this.menuStrip.Visible && !this.menuStrip.ContainsFocus) {
|
if(this.menuStrip.Visible && !this.menuStrip.ContainsFocus) {
|
||||||
this.menuStrip.Visible = false;
|
this.menuStrip.Visible = false;
|
||||||
|
|
Loading…
Add table
Reference in a new issue