win32: move hotkey code and definitions to its own file, for more easy organization
This commit is contained in:
parent
41b8605937
commit
4247b76b47
|
@ -536,6 +536,14 @@
|
|||
RelativePath=".\ginfo.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\hotkey.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\hotkey.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\inputdx.cpp"
|
||||
>
|
||||
|
|
|
@ -910,6 +910,10 @@
|
|||
RelativePath=".\ginfo.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\hotkey.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\inputdx.cpp"
|
||||
>
|
||||
|
@ -1024,6 +1028,10 @@
|
|||
RelativePath=".\ginfo.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\hotkey.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\inputdx.h"
|
||||
>
|
||||
|
|
|
@ -0,0 +1,264 @@
|
|||
///* This file is part of DeSmuME, derived from several files in Snes9x 1.51 which are
|
||||
// licensed under the terms supplied at the end of this file (for the terms are very long!)
|
||||
// Differences from that baseline version are:
|
||||
//
|
||||
// Copyright (C) 2009 DeSmuME team
|
||||
//
|
||||
// DeSmuME is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 2 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// DeSmuME is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with DeSmuME; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
//*/
|
||||
|
||||
#include "hotkey.h"
|
||||
#include "main.h"
|
||||
#include "NDSSystem.h"
|
||||
|
||||
SCustomKeys CustomKeys;
|
||||
|
||||
|
||||
bool IsLastCustomKey (const SCustomKey *key)
|
||||
{
|
||||
return (key->key == 0xFFFF && key->modifiers == 0xFFFF);
|
||||
}
|
||||
|
||||
void SetLastCustomKey (SCustomKey *key)
|
||||
{
|
||||
key->key = 0xFFFF;
|
||||
key->modifiers = 0xFFFF;
|
||||
}
|
||||
|
||||
void ZeroCustomKeys (SCustomKeys *keys)
|
||||
{
|
||||
UINT i = 0;
|
||||
|
||||
SetLastCustomKey(&keys->LastItem);
|
||||
while (!IsLastCustomKey(&keys->key[i])) {
|
||||
keys->key[i].key = 0;
|
||||
keys->key[i].modifiers = 0;
|
||||
i++;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
void HK_PrintScreen()
|
||||
{
|
||||
OPENFILENAME ofn;
|
||||
char filename[MAX_PATH] = "";
|
||||
ZeroMemory(&ofn, sizeof(ofn));
|
||||
ofn.lStructSize = sizeof(ofn);
|
||||
ofn.hwndOwner = MainWindow->getHWnd();
|
||||
ofn.lpstrFilter = "Bmp file (*.bmp)\0*.bmp\0Any file (*.*)\0*.*\0\0";
|
||||
ofn.nFilterIndex = 1;
|
||||
ofn.lpstrFile = filename;
|
||||
ofn.lpstrTitle = "Print Screen Save As";
|
||||
ofn.nMaxFile = MAX_PATH;
|
||||
ofn.lpstrDefExt = "bmp";
|
||||
ofn.Flags = OFN_OVERWRITEPROMPT;
|
||||
GetSaveFileName(&ofn);
|
||||
NDS_WriteBMP(filename);
|
||||
}
|
||||
|
||||
void CopyCustomKeys (SCustomKeys *dst, const SCustomKeys *src)
|
||||
{
|
||||
UINT i = 0;
|
||||
|
||||
do {
|
||||
dst->key[i] = src->key[i];
|
||||
} while (!IsLastCustomKey(&src->key[i++]));
|
||||
}
|
||||
|
||||
void InitCustomKeys (SCustomKeys *keys)
|
||||
{
|
||||
UINT i = 0;
|
||||
|
||||
SetLastCustomKey(&keys->LastItem);
|
||||
while (!IsLastCustomKey(&keys->key[i])) {
|
||||
keys->key[i].key = 0;
|
||||
keys->key[i].modifiers = 0;
|
||||
keys->key[i].handleKeyDown = NULL;
|
||||
keys->key[i].handleKeyUp = NULL;
|
||||
keys->key[i].page = NUM_HOTKEY_PAGE;
|
||||
keys->key[i].name = NULL;
|
||||
//keys->key[i].timing = PROCESS_NOW;
|
||||
i++;
|
||||
};
|
||||
|
||||
//set handlers
|
||||
keys->PrintScreen.handleKeyDown = HK_PrintScreen;
|
||||
keys->PrintScreen.code = "PrintScreen";
|
||||
keys->PrintScreen.name = _T("Print Screen");
|
||||
keys->PrintScreen.page = HOTKEY_PAGE_TOOLS;
|
||||
keys->PrintScreen.key = VK_PAUSE;
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************************
|
||||
Snes9x - Portable Super Nintendo Entertainment System (TM) emulator.
|
||||
|
||||
(c) Copyright 1996 - 2002 Gary Henderson (gary.henderson@ntlworld.com),
|
||||
Jerremy Koot (jkoot@snes9x.com)
|
||||
|
||||
(c) Copyright 2002 - 2004 Matthew Kendora
|
||||
|
||||
(c) Copyright 2002 - 2005 Peter Bortas (peter@bortas.org)
|
||||
|
||||
(c) Copyright 2004 - 2005 Joel Yliluoma (http://iki.fi/bisqwit/)
|
||||
|
||||
(c) Copyright 2001 - 2006 John Weidman (jweidman@slip.net)
|
||||
|
||||
(c) Copyright 2002 - 2006 funkyass (funkyass@spam.shaw.ca),
|
||||
Kris Bleakley (codeviolation@hotmail.com)
|
||||
|
||||
(c) Copyright 2002 - 2007 Brad Jorsch (anomie@users.sourceforge.net),
|
||||
Nach (n-a-c-h@users.sourceforge.net),
|
||||
zones (kasumitokoduck@yahoo.com)
|
||||
|
||||
(c) Copyright 2006 - 2007 nitsuja
|
||||
|
||||
|
||||
BS-X C emulator code
|
||||
(c) Copyright 2005 - 2006 Dreamer Nom,
|
||||
zones
|
||||
|
||||
C4 x86 assembler and some C emulation code
|
||||
(c) Copyright 2000 - 2003 _Demo_ (_demo_@zsnes.com),
|
||||
Nach,
|
||||
zsKnight (zsknight@zsnes.com)
|
||||
|
||||
C4 C++ code
|
||||
(c) Copyright 2003 - 2006 Brad Jorsch,
|
||||
Nach
|
||||
|
||||
DSP-1 emulator code
|
||||
(c) Copyright 1998 - 2006 _Demo_,
|
||||
Andreas Naive (andreasnaive@gmail.com)
|
||||
Gary Henderson,
|
||||
Ivar (ivar@snes9x.com),
|
||||
John Weidman,
|
||||
Kris Bleakley,
|
||||
Matthew Kendora,
|
||||
Nach,
|
||||
neviksti (neviksti@hotmail.com)
|
||||
|
||||
DSP-2 emulator code
|
||||
(c) Copyright 2003 John Weidman,
|
||||
Kris Bleakley,
|
||||
Lord Nightmare (lord_nightmare@users.sourceforge.net),
|
||||
Matthew Kendora,
|
||||
neviksti
|
||||
|
||||
|
||||
DSP-3 emulator code
|
||||
(c) Copyright 2003 - 2006 John Weidman,
|
||||
Kris Bleakley,
|
||||
Lancer,
|
||||
z80 gaiden
|
||||
|
||||
DSP-4 emulator code
|
||||
(c) Copyright 2004 - 2006 Dreamer Nom,
|
||||
John Weidman,
|
||||
Kris Bleakley,
|
||||
Nach,
|
||||
z80 gaiden
|
||||
|
||||
OBC1 emulator code
|
||||
(c) Copyright 2001 - 2004 zsKnight,
|
||||
pagefault (pagefault@zsnes.com),
|
||||
Kris Bleakley,
|
||||
Ported from x86 assembler to C by sanmaiwashi
|
||||
|
||||
SPC7110 and RTC C++ emulator code
|
||||
(c) Copyright 2002 Matthew Kendora with research by
|
||||
zsKnight,
|
||||
John Weidman,
|
||||
Dark Force
|
||||
|
||||
S-DD1 C emulator code
|
||||
(c) Copyright 2003 Brad Jorsch with research by
|
||||
Andreas Naive,
|
||||
John Weidman
|
||||
|
||||
S-RTC C emulator code
|
||||
(c) Copyright 2001-2006 byuu,
|
||||
John Weidman
|
||||
|
||||
ST010 C++ emulator code
|
||||
(c) Copyright 2003 Feather,
|
||||
John Weidman,
|
||||
Kris Bleakley,
|
||||
Matthew Kendora
|
||||
|
||||
Super FX x86 assembler emulator code
|
||||
(c) Copyright 1998 - 2003 _Demo_,
|
||||
pagefault,
|
||||
zsKnight,
|
||||
|
||||
Super FX C emulator code
|
||||
(c) Copyright 1997 - 1999 Ivar,
|
||||
Gary Henderson,
|
||||
John Weidman
|
||||
|
||||
Sound DSP emulator code is derived from SNEeSe and OpenSPC:
|
||||
(c) Copyright 1998 - 2003 Brad Martin
|
||||
(c) Copyright 1998 - 2006 Charles Bilyue'
|
||||
|
||||
SH assembler code partly based on x86 assembler code
|
||||
(c) Copyright 2002 - 2004 Marcus Comstedt (marcus@mc.pp.se)
|
||||
|
||||
2xSaI filter
|
||||
(c) Copyright 1999 - 2001 Derek Liauw Kie Fa
|
||||
|
||||
HQ2x, HQ3x, HQ4x filters
|
||||
(c) Copyright 2003 Maxim Stepin (maxim@hiend3d.com)
|
||||
|
||||
Win32 GUI code
|
||||
(c) Copyright 2003 - 2006 blip,
|
||||
funkyass,
|
||||
Matthew Kendora,
|
||||
Nach,
|
||||
nitsuja
|
||||
|
||||
Mac OS GUI code
|
||||
(c) Copyright 1998 - 2001 John Stiles
|
||||
(c) Copyright 2001 - 2007 zones
|
||||
|
||||
|
||||
Specific ports contains the works of other authors. See headers in
|
||||
individual files.
|
||||
|
||||
|
||||
Snes9x homepage: http://www.snes9x.com
|
||||
|
||||
Permission to use, copy, modify and/or distribute Snes9x in both binary
|
||||
and source form, for non-commercial purposes, is hereby granted without
|
||||
fee, providing that this license information and copyright notice appear
|
||||
with all copies and any derived work.
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event shall the authors be held liable for any damages
|
||||
arising from the use of this software or it's derivatives.
|
||||
|
||||
Snes9x is freeware for PERSONAL USE only. Commercial users should
|
||||
seek permission of the copyright holders first. Commercial use includes,
|
||||
but is not limited to, charging money for Snes9x or software derived from
|
||||
Snes9x, including Snes9x or derivatives in commercial game bundles, and/or
|
||||
using Snes9x as a promotion for your commercial product.
|
||||
|
||||
The copyright holders request that bug fixes and improvements to the code
|
||||
should be forwarded to them so everyone can benefit from the modifications
|
||||
in future versions.
|
||||
|
||||
Super NES and Super Nintendo Entertainment System are trademarks of
|
||||
Nintendo Co., Limited and its subsidiary companies.
|
||||
**********************************************************************************/
|
||||
|
|
@ -0,0 +1,232 @@
|
|||
///* This file is part of DeSmuME, derived from several files in Snes9x 1.51 which are
|
||||
// licensed under the terms supplied at the end of this file (for the terms are very long!)
|
||||
// Differences from that baseline version are:
|
||||
//
|
||||
// Copyright (C) 2009 DeSmuME team
|
||||
//
|
||||
// DeSmuME is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 2 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// DeSmuME is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with DeSmuME; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
//*/
|
||||
|
||||
#ifndef HOTKEY_H_INCLUDED
|
||||
#define HOTKEY_H_INCLUDED
|
||||
|
||||
#include <windows.h>
|
||||
#include <tchar.h>
|
||||
|
||||
enum HotkeyPage {
|
||||
HOTKEY_PAGE_TOOLS=0,
|
||||
HOTKEY_PAGE_PLACEHOLDER=1,
|
||||
NUM_HOTKEY_PAGE,
|
||||
};
|
||||
|
||||
static LPCTSTR hotkeyPageTitle[] = {
|
||||
_T("Tools"),
|
||||
_T("Placeholder"),
|
||||
_T("NUM_HOTKEY_PAGE"),
|
||||
};
|
||||
|
||||
|
||||
struct SCustomKey {
|
||||
typedef void (*THandler) (void);
|
||||
WORD key;
|
||||
WORD modifiers;
|
||||
THandler handleKeyDown;
|
||||
THandler handleKeyUp;
|
||||
HotkeyPage page;
|
||||
LPCTSTR name;
|
||||
const char* code;
|
||||
//HotkeyTiming timing;
|
||||
};
|
||||
|
||||
union SCustomKeys {
|
||||
struct {
|
||||
SCustomKey PrintScreen;
|
||||
SCustomKey LastItem; // dummy, must be last
|
||||
};
|
||||
SCustomKey key[];
|
||||
};
|
||||
|
||||
extern SCustomKeys CustomKeys;
|
||||
|
||||
bool IsLastCustomKey (const SCustomKey *key);
|
||||
void CopyCustomKeys (SCustomKeys *dst, const SCustomKeys *src);
|
||||
void InitCustomKeys (SCustomKeys *keys);
|
||||
int GetModifiers(int key);
|
||||
|
||||
//HOTKEY HANDLERS
|
||||
void HK_PrintScreen();
|
||||
|
||||
#endif //HOTKEY_H_INCLUDED
|
||||
|
||||
/**********************************************************************************
|
||||
Snes9x - Portable Super Nintendo Entertainment System (TM) emulator.
|
||||
|
||||
(c) Copyright 1996 - 2002 Gary Henderson (gary.henderson@ntlworld.com),
|
||||
Jerremy Koot (jkoot@snes9x.com)
|
||||
|
||||
(c) Copyright 2002 - 2004 Matthew Kendora
|
||||
|
||||
(c) Copyright 2002 - 2005 Peter Bortas (peter@bortas.org)
|
||||
|
||||
(c) Copyright 2004 - 2005 Joel Yliluoma (http://iki.fi/bisqwit/)
|
||||
|
||||
(c) Copyright 2001 - 2006 John Weidman (jweidman@slip.net)
|
||||
|
||||
(c) Copyright 2002 - 2006 funkyass (funkyass@spam.shaw.ca),
|
||||
Kris Bleakley (codeviolation@hotmail.com)
|
||||
|
||||
(c) Copyright 2002 - 2007 Brad Jorsch (anomie@users.sourceforge.net),
|
||||
Nach (n-a-c-h@users.sourceforge.net),
|
||||
zones (kasumitokoduck@yahoo.com)
|
||||
|
||||
(c) Copyright 2006 - 2007 nitsuja
|
||||
|
||||
|
||||
BS-X C emulator code
|
||||
(c) Copyright 2005 - 2006 Dreamer Nom,
|
||||
zones
|
||||
|
||||
C4 x86 assembler and some C emulation code
|
||||
(c) Copyright 2000 - 2003 _Demo_ (_demo_@zsnes.com),
|
||||
Nach,
|
||||
zsKnight (zsknight@zsnes.com)
|
||||
|
||||
C4 C++ code
|
||||
(c) Copyright 2003 - 2006 Brad Jorsch,
|
||||
Nach
|
||||
|
||||
DSP-1 emulator code
|
||||
(c) Copyright 1998 - 2006 _Demo_,
|
||||
Andreas Naive (andreasnaive@gmail.com)
|
||||
Gary Henderson,
|
||||
Ivar (ivar@snes9x.com),
|
||||
John Weidman,
|
||||
Kris Bleakley,
|
||||
Matthew Kendora,
|
||||
Nach,
|
||||
neviksti (neviksti@hotmail.com)
|
||||
|
||||
DSP-2 emulator code
|
||||
(c) Copyright 2003 John Weidman,
|
||||
Kris Bleakley,
|
||||
Lord Nightmare (lord_nightmare@users.sourceforge.net),
|
||||
Matthew Kendora,
|
||||
neviksti
|
||||
|
||||
|
||||
DSP-3 emulator code
|
||||
(c) Copyright 2003 - 2006 John Weidman,
|
||||
Kris Bleakley,
|
||||
Lancer,
|
||||
z80 gaiden
|
||||
|
||||
DSP-4 emulator code
|
||||
(c) Copyright 2004 - 2006 Dreamer Nom,
|
||||
John Weidman,
|
||||
Kris Bleakley,
|
||||
Nach,
|
||||
z80 gaiden
|
||||
|
||||
OBC1 emulator code
|
||||
(c) Copyright 2001 - 2004 zsKnight,
|
||||
pagefault (pagefault@zsnes.com),
|
||||
Kris Bleakley,
|
||||
Ported from x86 assembler to C by sanmaiwashi
|
||||
|
||||
SPC7110 and RTC C++ emulator code
|
||||
(c) Copyright 2002 Matthew Kendora with research by
|
||||
zsKnight,
|
||||
John Weidman,
|
||||
Dark Force
|
||||
|
||||
S-DD1 C emulator code
|
||||
(c) Copyright 2003 Brad Jorsch with research by
|
||||
Andreas Naive,
|
||||
John Weidman
|
||||
|
||||
S-RTC C emulator code
|
||||
(c) Copyright 2001-2006 byuu,
|
||||
John Weidman
|
||||
|
||||
ST010 C++ emulator code
|
||||
(c) Copyright 2003 Feather,
|
||||
John Weidman,
|
||||
Kris Bleakley,
|
||||
Matthew Kendora
|
||||
|
||||
Super FX x86 assembler emulator code
|
||||
(c) Copyright 1998 - 2003 _Demo_,
|
||||
pagefault,
|
||||
zsKnight,
|
||||
|
||||
Super FX C emulator code
|
||||
(c) Copyright 1997 - 1999 Ivar,
|
||||
Gary Henderson,
|
||||
John Weidman
|
||||
|
||||
Sound DSP emulator code is derived from SNEeSe and OpenSPC:
|
||||
(c) Copyright 1998 - 2003 Brad Martin
|
||||
(c) Copyright 1998 - 2006 Charles Bilyue'
|
||||
|
||||
SH assembler code partly based on x86 assembler code
|
||||
(c) Copyright 2002 - 2004 Marcus Comstedt (marcus@mc.pp.se)
|
||||
|
||||
2xSaI filter
|
||||
(c) Copyright 1999 - 2001 Derek Liauw Kie Fa
|
||||
|
||||
HQ2x, HQ3x, HQ4x filters
|
||||
(c) Copyright 2003 Maxim Stepin (maxim@hiend3d.com)
|
||||
|
||||
Win32 GUI code
|
||||
(c) Copyright 2003 - 2006 blip,
|
||||
funkyass,
|
||||
Matthew Kendora,
|
||||
Nach,
|
||||
nitsuja
|
||||
|
||||
Mac OS GUI code
|
||||
(c) Copyright 1998 - 2001 John Stiles
|
||||
(c) Copyright 2001 - 2007 zones
|
||||
|
||||
|
||||
Specific ports contains the works of other authors. See headers in
|
||||
individual files.
|
||||
|
||||
|
||||
Snes9x homepage: http://www.snes9x.com
|
||||
|
||||
Permission to use, copy, modify and/or distribute Snes9x in both binary
|
||||
and source form, for non-commercial purposes, is hereby granted without
|
||||
fee, providing that this license information and copyright notice appear
|
||||
with all copies and any derived work.
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event shall the authors be held liable for any damages
|
||||
arising from the use of this software or it's derivatives.
|
||||
|
||||
Snes9x is freeware for PERSONAL USE only. Commercial users should
|
||||
seek permission of the copyright holders first. Commercial use includes,
|
||||
but is not limited to, charging money for Snes9x or software derived from
|
||||
Snes9x, including Snes9x or derivatives in commercial game bundles, and/or
|
||||
using Snes9x as a promotion for your commercial product.
|
||||
|
||||
The copyright holders request that bug fixes and improvements to the code
|
||||
should be forwarded to them so everyone can benefit from the modifications
|
||||
in future versions.
|
||||
|
||||
Super NES and Super Nintendo Entertainment System are trademarks of
|
||||
Nintendo Co., Limited and its subsidiary companies.
|
||||
**********************************************************************************/
|
||||
|
|
@ -43,6 +43,7 @@
|
|||
#endif
|
||||
|
||||
#include "inputdx.h"
|
||||
#include "hotkey.h"
|
||||
|
||||
#include "main.h"
|
||||
#include "resource.h"
|
||||
|
|
|
@ -72,6 +72,7 @@
|
|||
|
||||
#include "../common.h"
|
||||
#include "main.h"
|
||||
#include "hotkey.h"
|
||||
|
||||
#include "snddx.h"
|
||||
|
||||
|
@ -121,7 +122,7 @@ LPDIRECTDRAWCLIPPER lpDDClipBack=NULL;
|
|||
//===================== Input vars
|
||||
//INPUTCLASS *input = NULL;
|
||||
|
||||
#define WM_CUSTKEYDOWN (WM_USER+50)
|
||||
#define WM_CUSTKEYDOWN (WM_USER+50)
|
||||
#define WM_CUSTKEYUP (WM_USER+51)
|
||||
|
||||
#ifndef EXPERIMENTAL_GBASLOT
|
||||
|
@ -1065,14 +1066,6 @@ void SetLanguage(int langid)
|
|||
|
||||
HMODULE kernel32 = LoadLibrary("kernel32.dll");
|
||||
FARPROC _setThreadUILanguage = (FARPROC)GetProcAddress(kernel32,"SetThreadUILanguage");
|
||||
|
||||
//OSVERSIONINFO info;
|
||||
//ZeroMemory(&info, sizeof(info));
|
||||
//info.dwOSVersionInfoSize = sizeof(info);
|
||||
//GetVersionEx(&info);
|
||||
//setLanguageFunc setLanguage = ((info.dwMajorVersion >= 6) ?
|
||||
// (setLanguageFunc)_setThreadUILanguage : (setLanguageFunc)SetThreadLocale);
|
||||
|
||||
setLanguageFunc setLanguage = _setThreadUILanguage?(setLanguageFunc)_setThreadUILanguage:(setLanguageFunc)SetThreadLocale;
|
||||
|
||||
switch(langid)
|
||||
|
@ -1776,11 +1769,6 @@ LRESULT OpenFile()
|
|||
return 0;
|
||||
}
|
||||
|
||||
void SetDefaults()
|
||||
{
|
||||
InitCustomKeys(&CustomKeys);
|
||||
}
|
||||
|
||||
//TODO - async key state? for real?
|
||||
int GetModifiers(int key)
|
||||
{
|
||||
|
@ -1795,20 +1783,18 @@ int GetModifiers(int key)
|
|||
return modifiers;
|
||||
}
|
||||
|
||||
SCustomKeys CustomKeys;
|
||||
|
||||
int HandleKeyUp(WPARAM wParam, LPARAM lParam, int modifiers)
|
||||
{
|
||||
SCustomKey *key = CustomKeys.key;
|
||||
|
||||
while (!IsLastCustomKey(key)) {
|
||||
if (wParam == key->key && modifiers == key->modifiers && key->handleKeyUp) {
|
||||
key->handleKeyUp();
|
||||
}
|
||||
key++;
|
||||
}
|
||||
|
||||
return 1;
|
||||
SCustomKey *key = CustomKeys.key;
|
||||
|
||||
while (!IsLastCustomKey(key)) {
|
||||
if (wParam == key->key && modifiers == key->modifiers && key->handleKeyUp) {
|
||||
key->handleKeyUp();
|
||||
}
|
||||
key++;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int HandleKeyMessage(WPARAM wParam, LPARAM lParam, int modifiers)
|
||||
|
@ -1816,102 +1802,27 @@ int HandleKeyMessage(WPARAM wParam, LPARAM lParam, int modifiers)
|
|||
//some crap from snes9x I dont understand with toggles and macros...
|
||||
|
||||
bool hitHotKey = false;
|
||||
|
||||
if(!(wParam == 0 || wParam == VK_ESCAPE)) // if it's the 'disabled' key, it's never pressed as a hotkey
|
||||
{
|
||||
SCustomKey *key = CustomKeys.key;
|
||||
while (!IsLastCustomKey(key)) {
|
||||
if (wParam == key->key && modifiers == key->modifiers && key->handleKeyDown) {
|
||||
key->handleKeyDown();
|
||||
hitHotKey = true;
|
||||
}
|
||||
key++;
|
||||
}
|
||||
|
||||
// don't pull down menu if alt is a hotkey or the menu isn't there, unless no game is running
|
||||
//if(!Settings.StopEmulation && ((wParam == VK_MENU || wParam == VK_F10) && (hitHotKey || GetMenu (GUI.hWnd) == NULL) && !GetAsyncKeyState(VK_F4)))
|
||||
// return 0;
|
||||
|
||||
if(!(wParam == 0 || wParam == VK_ESCAPE)) // if it's the 'disabled' key, it's never pressed as a hotkey
|
||||
{
|
||||
SCustomKey *key = CustomKeys.key;
|
||||
while (!IsLastCustomKey(key)) {
|
||||
if (wParam == key->key && modifiers == key->modifiers && key->handleKeyDown) {
|
||||
key->handleKeyDown();
|
||||
hitHotKey = true;
|
||||
}
|
||||
key++;
|
||||
}
|
||||
|
||||
// don't pull down menu if alt is a hotkey or the menu isn't there, unless no game is running
|
||||
//if(!Settings.StopEmulation && ((wParam == VK_MENU || wParam == VK_F10) && (hitHotKey || GetMenu (GUI.hWnd) == NULL) && !GetAsyncKeyState(VK_F4)))
|
||||
// return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
bool IsLastCustomKey (const SCustomKey *key)
|
||||
{
|
||||
return (key->key == 0xFFFF && key->modifiers == 0xFFFF);
|
||||
}
|
||||
|
||||
void SetLastCustomKey (SCustomKey *key)
|
||||
{
|
||||
key->key = 0xFFFF;
|
||||
key->modifiers = 0xFFFF;
|
||||
}
|
||||
|
||||
void ZeroCustomKeys (SCustomKeys *keys)
|
||||
{
|
||||
UINT i = 0;
|
||||
|
||||
SetLastCustomKey(&keys->LastItem);
|
||||
while (!IsLastCustomKey(&keys->key[i])) {
|
||||
keys->key[i].key = 0;
|
||||
keys->key[i].modifiers = 0;
|
||||
i++;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
void HK_PrintScreen()
|
||||
{
|
||||
OPENFILENAME ofn;
|
||||
char filename[MAX_PATH] = "";
|
||||
ZeroMemory(&ofn, sizeof(ofn));
|
||||
ofn.lStructSize = sizeof(ofn);
|
||||
ofn.hwndOwner = MainWindow->getHWnd();
|
||||
ofn.lpstrFilter = "Bmp file (*.bmp)\0*.bmp\0Any file (*.*)\0*.*\0\0";
|
||||
ofn.nFilterIndex = 1;
|
||||
ofn.lpstrFile = filename;
|
||||
ofn.lpstrTitle = "Print Screen Save As";
|
||||
ofn.nMaxFile = MAX_PATH;
|
||||
ofn.lpstrDefExt = "bmp";
|
||||
ofn.Flags = OFN_OVERWRITEPROMPT;
|
||||
GetSaveFileName(&ofn);
|
||||
NDS_WriteBMP(filename);
|
||||
}
|
||||
|
||||
void CopyCustomKeys (SCustomKeys *dst, const SCustomKeys *src)
|
||||
{
|
||||
UINT i = 0;
|
||||
|
||||
do {
|
||||
dst->key[i] = src->key[i];
|
||||
} while (!IsLastCustomKey(&src->key[i++]));
|
||||
}
|
||||
|
||||
void InitCustomKeys (SCustomKeys *keys)
|
||||
{
|
||||
UINT i = 0;
|
||||
|
||||
SetLastCustomKey(&keys->LastItem);
|
||||
while (!IsLastCustomKey(&keys->key[i])) {
|
||||
keys->key[i].key = 0;
|
||||
keys->key[i].modifiers = 0;
|
||||
keys->key[i].handleKeyDown = NULL;
|
||||
keys->key[i].handleKeyUp = NULL;
|
||||
keys->key[i].page = NUM_HOTKEY_PAGE;
|
||||
keys->key[i].name = NULL;
|
||||
//keys->key[i].timing = PROCESS_NOW;
|
||||
i++;
|
||||
};
|
||||
|
||||
//set handlers
|
||||
keys->PrintScreen.handleKeyDown = HK_PrintScreen;
|
||||
keys->PrintScreen.code = "PrintScreen";
|
||||
keys->PrintScreen.name = _T("Print Screen");
|
||||
keys->PrintScreen.page = HOTKEY_PAGE_TOOLS;
|
||||
keys->PrintScreen.key = VK_PAUSE;
|
||||
}
|
||||
|
||||
void RunConfig(int num)
|
||||
{
|
||||
HWND hwnd = MainWindow->getHWnd();
|
||||
|
@ -2028,8 +1939,8 @@ LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM
|
|||
case WM_CUSTKEYUP:
|
||||
{
|
||||
int modifiers = GetModifiers(wParam);
|
||||
HandleKeyUp(wParam, lParam, modifiers);
|
||||
}
|
||||
HandleKeyUp(wParam, lParam, modifiers);
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_SIZE:
|
||||
|
|
|
@ -4,48 +4,5 @@
|
|||
#include "CWindow.h"
|
||||
extern WINCLASS *MainWindow;
|
||||
|
||||
|
||||
enum HotkeyPage {
|
||||
HOTKEY_PAGE_TOOLS=0,
|
||||
HOTKEY_PAGE_PLACEHOLDER=1,
|
||||
NUM_HOTKEY_PAGE,
|
||||
};
|
||||
|
||||
static LPCTSTR hotkeyPageTitle[] = {
|
||||
_T("Tools"),
|
||||
_T("Placeholder"),
|
||||
_T("NUM_HOTKEY_PAGE"),
|
||||
};
|
||||
|
||||
|
||||
|
||||
struct SCustomKey {
|
||||
typedef void (*THandler) (void);
|
||||
WORD key;
|
||||
WORD modifiers;
|
||||
THandler handleKeyDown;
|
||||
THandler handleKeyUp;
|
||||
HotkeyPage page;
|
||||
LPCTSTR name;
|
||||
const char* code;
|
||||
//HotkeyTiming timing;
|
||||
};
|
||||
|
||||
union SCustomKeys {
|
||||
struct {
|
||||
SCustomKey PrintScreen;
|
||||
SCustomKey LastItem; // dummy, must be last
|
||||
};
|
||||
SCustomKey key[];
|
||||
};
|
||||
|
||||
extern SCustomKeys CustomKeys;
|
||||
bool IsLastCustomKey (const SCustomKey *key);
|
||||
void CopyCustomKeys (SCustomKeys *dst, const SCustomKeys *src);
|
||||
void InitCustomKeys (SCustomKeys *keys);
|
||||
int GetModifiers(int key);
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue