2020-03-27 23:38:58 +08:00
# pragma once
2020-04-19 07:12:26 +08:00
# include "KeyDropDownControl.h"
2020-03-27 23:38:58 +08:00
2020-07-14 02:49:09 +08:00
class KeyboardManagerState ;
namespace winrt : : Windows : : UI : : Xaml
{
struct XamlRoot ;
namespace Controls
{
struct StackPanel ;
struct Grid ;
}
}
2020-03-27 23:38:58 +08:00
class SingleKeyRemapControl
{
private :
2020-04-19 07:12:26 +08:00
// Drop down to display the selected remap key
KeyDropDownControl singleKeyRemapDropDown ;
2020-03-27 23:38:58 +08:00
// Button to type the remap key
2020-07-14 02:49:09 +08:00
winrt : : Windows : : Foundation : : IInspectable typeKey ;
2020-03-27 23:38:58 +08:00
// StackPanel to parent the above controls
2020-07-14 02:49:09 +08:00
winrt : : Windows : : Foundation : : IInspectable singleKeyRemapControlLayout ;
2020-03-27 23:38:58 +08:00
public :
// Handle to the current Edit Keyboard Window
static HWND EditKeyboardWindowHandle ;
// Pointer to the keyboard manager state
static KeyboardManagerState * keyboardManagerState ;
2020-04-10 00:20:19 +08:00
// Stores the current list of remappings
static std : : vector < std : : vector < DWORD > > singleKeyRemapBuffer ;
2020-03-27 23:38:58 +08:00
2020-07-14 02:49:09 +08:00
// constructor
SingleKeyRemapControl ( Grid table , const int colIndex ) ;
2020-03-27 23:38:58 +08:00
// Function to add a new row to the remap keys table. If the originalKey and newKey args are provided, then the displayed remap keys are set to those values.
2020-07-14 02:49:09 +08:00
static void AddNewControlKeyRemapRow ( winrt : : Windows : : UI : : Xaml : : Controls : : Grid & parent , std : : vector < std : : vector < std : : unique_ptr < SingleKeyRemapControl > > > & keyboardRemapControlObjects , const DWORD originalKey = NULL , const DWORD newKey = NULL ) ;
2020-03-27 23:38:58 +08:00
// Function to return the stack panel element of the SingleKeyRemapControl. This is the externally visible UI element which can be used to add it to other layouts
2020-07-14 02:49:09 +08:00
winrt : : Windows : : UI : : Xaml : : Controls : : StackPanel getSingleKeyRemapControl ( ) ;
2020-03-27 23:38:58 +08:00
// Function to create the detect remap keys UI window
2020-04-24 00:14:16 +08:00
void createDetectKeyWindow ( winrt : : Windows : : Foundation : : IInspectable const & sender , XamlRoot xamlRoot , std : : vector < std : : vector < DWORD > > & singleKeyRemapBuffer , KeyboardManagerState & keyboardManagerState ) ;
2020-03-27 23:38:58 +08:00
} ;