Added Windows.API.VirtualKeys enum.
Started VirtualKeus --> OpenTK.Input.Keys keymap . Removed Keyboard.Key set property.
This commit is contained in:
parent
732c582874
commit
8f90c9d50f
5 changed files with 313 additions and 13 deletions
|
@ -86,6 +86,12 @@ namespace Examples.Tutorial
|
|||
return;
|
||||
}
|
||||
|
||||
if ((Key[OpenTK.Input.Keys.LeftAlt] || Key[OpenTK.Input.Keys.RightAlt]) &&
|
||||
Key[OpenTK.Input.Keys.Enter])
|
||||
{
|
||||
Fullscreen = true;
|
||||
}
|
||||
|
||||
GL.MatrixMode(Enums.MatrixMode.MODELVIEW);
|
||||
GL.LoadIdentity();
|
||||
Glu.LookAt(
|
||||
|
|
|
@ -8,7 +8,7 @@ namespace OpenTK.Input
|
|||
{
|
||||
public interface IKeyboard
|
||||
{
|
||||
bool this[Keys k] { get; set; }
|
||||
bool this[Keys k] { get; }
|
||||
//void Poll();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -41,7 +41,7 @@ namespace OpenTK.Input
|
|||
public bool this[Keys k]
|
||||
{
|
||||
get { return keyboard[k]; }
|
||||
set { keyboard[k] = value; }
|
||||
//set { keyboard[k] = value; }
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
|
|
@ -1471,7 +1471,8 @@ namespace OpenTK.Platform.Windows
|
|||
/// <summary>
|
||||
/// Microsoft Windows message compatible virtual-key code. For more information, see Virtual-Key Codes.
|
||||
/// </summary>
|
||||
public USHORT VKey;
|
||||
//public USHORT VKey;
|
||||
public VirtualKeys VKey;
|
||||
/// <summary>
|
||||
/// Corresponding window message, for example WM_KEYDOWN, WM_SYSKEYDOWN, and so forth.
|
||||
/// </summary>
|
||||
|
@ -1906,6 +1907,268 @@ namespace OpenTK.Platform.Windows
|
|||
|
||||
#endregion
|
||||
|
||||
#region VirtualKeys
|
||||
|
||||
public enum VirtualKeys : short
|
||||
{
|
||||
/*
|
||||
* Virtual Keys, Standard Set
|
||||
*/
|
||||
LBUTTON = 0x01,
|
||||
RBUTTON = 0x02,
|
||||
CANCEL = 0x03,
|
||||
MBUTTON = 0x04, /* NOT contiguous with L & RBUTTON */
|
||||
|
||||
XBUTTON1 = 0x05, /* NOT contiguous with L & RBUTTON */
|
||||
XBUTTON2 = 0x06, /* NOT contiguous with L & RBUTTON */
|
||||
|
||||
/*
|
||||
* 0x07 : unassigned
|
||||
*/
|
||||
|
||||
BACK = 0x08,
|
||||
TAB = 0x09,
|
||||
|
||||
/*
|
||||
* 0x0A - 0x0B : reserved
|
||||
*/
|
||||
|
||||
CLEAR = 0x0C,
|
||||
RETURN = 0x0D,
|
||||
|
||||
SHIFT = 0x10,
|
||||
CONTROL = 0x11,
|
||||
MENU = 0x12,
|
||||
PAUSE = 0x13,
|
||||
CAPITAL = 0x14,
|
||||
|
||||
KANA = 0x15,
|
||||
HANGEUL = 0x15, /* old name - should be here for compatibility */
|
||||
HANGUL = 0x15,
|
||||
JUNJA = 0x17,
|
||||
FINAL = 0x18,
|
||||
HANJA = 0x19,
|
||||
KANJI = 0x19,
|
||||
|
||||
ESCAPE = 0x1B,
|
||||
|
||||
CONVERT = 0x1C,
|
||||
NONCONVERT = 0x1D,
|
||||
ACCEPT = 0x1E,
|
||||
MODECHANGE = 0x1F,
|
||||
|
||||
SPACE = 0x20,
|
||||
PRIOR = 0x21,
|
||||
NEXT = 0x22,
|
||||
END = 0x23,
|
||||
HOME = 0x24,
|
||||
LEFT = 0x25,
|
||||
UP = 0x26,
|
||||
RIGHT = 0x27,
|
||||
DOWN = 0x28,
|
||||
SELECT = 0x29,
|
||||
PRINT = 0x2A,
|
||||
EXECUTE = 0x2B,
|
||||
SNAPSHOT = 0x2C,
|
||||
INSERT = 0x2D,
|
||||
DELETE = 0x2E,
|
||||
HELP = 0x2F,
|
||||
|
||||
/*
|
||||
* 0 - 9 are the same as ASCII '0' - '9' (0x30 - 0x39)
|
||||
* 0x40 : unassigned
|
||||
* A - Z are the same as ASCII 'A' - 'Z' (0x41 - 0x5A)
|
||||
*/
|
||||
|
||||
LWIN = 0x5B,
|
||||
RWIN = 0x5C,
|
||||
APPS = 0x5D,
|
||||
|
||||
/*
|
||||
* 0x5E : reserved
|
||||
*/
|
||||
|
||||
SLEEP = 0x5F,
|
||||
|
||||
NUMPAD0 = 0x60,
|
||||
NUMPAD1 = 0x61,
|
||||
NUMPAD2 = 0x62,
|
||||
NUMPAD3 = 0x63,
|
||||
NUMPAD4 = 0x64,
|
||||
NUMPAD5 = 0x65,
|
||||
NUMPAD6 = 0x66,
|
||||
NUMPAD7 = 0x67,
|
||||
NUMPAD8 = 0x68,
|
||||
NUMPAD9 = 0x69,
|
||||
MULTIPLY = 0x6A,
|
||||
ADD = 0x6B,
|
||||
SEPARATOR = 0x6C,
|
||||
SUBTRACT = 0x6D,
|
||||
DECIMAL = 0x6E,
|
||||
DIVIDE = 0x6F,
|
||||
F1 = 0x70,
|
||||
F2 = 0x71,
|
||||
F3 = 0x72,
|
||||
F4 = 0x73,
|
||||
F5 = 0x74,
|
||||
F6 = 0x75,
|
||||
F7 = 0x76,
|
||||
F8 = 0x77,
|
||||
F9 = 0x78,
|
||||
F10 = 0x79,
|
||||
F11 = 0x7A,
|
||||
F12 = 0x7B,
|
||||
F13 = 0x7C,
|
||||
F14 = 0x7D,
|
||||
F15 = 0x7E,
|
||||
F16 = 0x7F,
|
||||
F17 = 0x80,
|
||||
F18 = 0x81,
|
||||
F19 = 0x82,
|
||||
F20 = 0x83,
|
||||
F21 = 0x84,
|
||||
F22 = 0x85,
|
||||
F23 = 0x86,
|
||||
F24 = 0x87,
|
||||
|
||||
/*
|
||||
* 0x88 - 0x8F : unassigned
|
||||
*/
|
||||
|
||||
NUMLOCK = 0x90,
|
||||
SCROLL = 0x91,
|
||||
|
||||
/*
|
||||
* NEC PC-9800 kbd definitions
|
||||
*/
|
||||
OEM_NEC_EQUAL= 0x92, // '=' key on numpad
|
||||
|
||||
/*
|
||||
* Fujitsu/OASYS kbd definitions
|
||||
*/
|
||||
OEM_FJ_JISHO = 0x92, // 'Dictionary' key
|
||||
OEM_FJ_MASSHOU = 0x93, // 'Unregister word' key
|
||||
OEM_FJ_TOUROKU = 0x94, // 'Register word' key
|
||||
OEM_FJ_LOYA = 0x95, // 'Left OYAYUBI' key
|
||||
OEM_FJ_ROYA = 0x96, // 'Right OYAYUBI' key
|
||||
|
||||
/*
|
||||
* 0x97 - 0x9F : unassigned
|
||||
*/
|
||||
|
||||
/*
|
||||
* L* & R* - left and right Alt, Ctrl and Shift virtual keys.
|
||||
* Used only as parameters to GetAsyncKeyState() and GetKeyState().
|
||||
* No other API or message will distinguish left and right keys in this way.
|
||||
*/
|
||||
LSHIFT = 0xA0,
|
||||
RSHIFT = 0xA1,
|
||||
LCONTROL = 0xA2,
|
||||
RCONTROL = 0xA3,
|
||||
LMENU = 0xA4,
|
||||
RMENU = 0xA5,
|
||||
|
||||
BROWSER_BACK = 0xA6,
|
||||
BROWSER_FORWARD = 0xA7,
|
||||
BROWSER_REFRESH = 0xA8,
|
||||
BROWSER_STOP = 0xA9,
|
||||
BROWSER_SEARCH = 0xAA,
|
||||
BROWSER_FAVORITES = 0xAB,
|
||||
BROWSER_HOME = 0xAC,
|
||||
|
||||
VOLUME_MUTE = 0xAD,
|
||||
VOLUME_DOWN = 0xAE,
|
||||
VOLUME_UP = 0xAF,
|
||||
MEDIA_NEXT_TRACK = 0xB0,
|
||||
MEDIA_PREV_TRACK = 0xB1,
|
||||
MEDIA_STOP = 0xB2,
|
||||
MEDIA_PLAY_PAUSE = 0xB3,
|
||||
LAUNCH_MAIL = 0xB4,
|
||||
LAUNCH_MEDIA_SELECT = 0xB5,
|
||||
LAUNCH_APP1 = 0xB6,
|
||||
LAUNCH_APP2 = 0xB7,
|
||||
|
||||
/*
|
||||
* 0xB8 - 0xB9 : reserved
|
||||
*/
|
||||
|
||||
OEM_1 = 0xBA, // ';:' for US
|
||||
OEM_PLUS = 0xBB, // '+' any country
|
||||
OEM_COMMA = 0xBC, // ',' any country
|
||||
OEM_MINUS = 0xBD, // '-' any country
|
||||
OEM_PERIOD = 0xBE, // '.' any country
|
||||
OEM_2 = 0xBF, // '/?' for US
|
||||
OEM_3 = 0xC0, // '`~' for US
|
||||
|
||||
/*
|
||||
* 0xC1 - 0xD7 : reserved
|
||||
*/
|
||||
|
||||
/*
|
||||
* 0xD8 - 0xDA : unassigned
|
||||
*/
|
||||
|
||||
OEM_4 = 0xDB, // '[{' for US
|
||||
OEM_5 = 0xDC, // '\|' for US
|
||||
OEM_6 = 0xDD, // ']}' for US
|
||||
OEM_7 = 0xDE, // ''"' for US
|
||||
OEM_8 = 0xDF,
|
||||
|
||||
/*
|
||||
* 0xE0 : reserved
|
||||
*/
|
||||
|
||||
/*
|
||||
* Various extended or enhanced keyboards
|
||||
*/
|
||||
OEM_AX = 0xE1, // 'AX' key on Japanese AX kbd
|
||||
OEM_102 = 0xE2, // "<>" or "\|" on RT 102-key kbd.
|
||||
ICO_HELP = 0xE3, // Help key on ICO
|
||||
ICO_00 = 0xE4, // 00 key on ICO
|
||||
|
||||
PROCESSKEY = 0xE5,
|
||||
|
||||
ICO_CLEAR = 0xE6,
|
||||
|
||||
|
||||
PACKET = 0xE7,
|
||||
|
||||
/*
|
||||
* 0xE8 : unassigned
|
||||
*/
|
||||
|
||||
/*
|
||||
* Nokia/Ericsson definitions
|
||||
*/
|
||||
OEM_RESET = 0xE9,
|
||||
OEM_JUMP = 0xEA,
|
||||
OEM_PA1 = 0xEB,
|
||||
OEM_PA2 = 0xEC,
|
||||
OEM_PA3 = 0xED,
|
||||
OEM_WSCTRL = 0xEE,
|
||||
OEM_CUSEL = 0xEF,
|
||||
OEM_ATTN = 0xF0,
|
||||
OEM_FINISH = 0xF1,
|
||||
OEM_COPY = 0xF2,
|
||||
OEM_AUTO = 0xF3,
|
||||
OEM_ENLW = 0xF4,
|
||||
OEM_BACKTAB = 0xF5,
|
||||
|
||||
ATTN = 0xF6,
|
||||
CRSEL = 0xF7,
|
||||
EXSEL = 0xF8,
|
||||
EREOF = 0xF9,
|
||||
PLAY = 0xFA,
|
||||
ZOOM = 0xFB,
|
||||
NONAME = 0xFC,
|
||||
PA1 = 0xFD,
|
||||
OEM_CLEAR = 0xFE,
|
||||
|
||||
Last
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
|
||||
#region --- Callbacks ---
|
||||
|
|
|
@ -47,32 +47,63 @@ namespace OpenTK.Platform.Windows
|
|||
rid[0].ToString())
|
||||
);
|
||||
}
|
||||
|
||||
// Set the VirtualKey -> OpenTK.Key map
|
||||
keyMap.Add(API.VirtualKeys.ESCAPE, Keys.Escape);
|
||||
keyMap.Add(API.VirtualKeys.F1, Keys.F1);
|
||||
keyMap.Add(API.VirtualKeys.F2, Keys.F2);
|
||||
keyMap.Add(API.VirtualKeys.F3, Keys.F3);
|
||||
keyMap.Add(API.VirtualKeys.F4, Keys.F4);
|
||||
keyMap.Add(API.VirtualKeys.F5, Keys.F5);
|
||||
keyMap.Add(API.VirtualKeys.F6, Keys.F6);
|
||||
keyMap.Add(API.VirtualKeys.F7, Keys.F7);
|
||||
keyMap.Add(API.VirtualKeys.F8, Keys.F8);
|
||||
keyMap.Add(API.VirtualKeys.F9, Keys.F9);
|
||||
keyMap.Add(API.VirtualKeys.F10, Keys.F10);
|
||||
keyMap.Add(API.VirtualKeys.F11, Keys.F11);
|
||||
keyMap.Add(API.VirtualKeys.F12, Keys.F12);
|
||||
}
|
||||
|
||||
internal bool ProcessEvent(API.RawInput rin)
|
||||
{
|
||||
if (rin.Data.Keyboard.VKey == API.Constants.VK_ESCAPE)
|
||||
switch (rin.Header.Type)
|
||||
{
|
||||
if (rin.Data.Keyboard.Message == API.Constants.WM_KEYDOWN)
|
||||
keys[(int)Keys.Escape] = true;
|
||||
else
|
||||
keys[(int)Keys.Escape] = false;
|
||||
|
||||
return true;
|
||||
case API.RawInputDeviceType.KEYBOARD:
|
||||
this[keyMap[rin.Data.Keyboard.VKey]] =
|
||||
rin.Data.Keyboard.Message == API.Constants.WM_KEYDOWN ||
|
||||
rin.Data.Keyboard.Message == API.Constants.WM_SYSKEYDOWN;
|
||||
break;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
#region KeyMap
|
||||
|
||||
internal static Dictionary<API.VirtualKeys, Keys> keyMap =
|
||||
new Dictionary<API.VirtualKeys, Keys>((int)API.VirtualKeys.Last);
|
||||
|
||||
/*
|
||||
internal static List<KeyValuePair<API.VirtualKeys, Keys>> keyMap =
|
||||
new List<KeyValuePair<API.VirtualKeys, Keys>>(
|
||||
new KeyValuePair<API.VirtualKeys, Keys>[]
|
||||
{
|
||||
new KeyValuePair<API.VirtualKeys, Keys>(API.VirtualKeys.ESCAPE, Keys.Escape),
|
||||
new KeyValuePair<API.VirtualKeys, Keys>(API.VirtualKeys.F1, Keys.F1)
|
||||
}
|
||||
);
|
||||
*/
|
||||
#endregion
|
||||
|
||||
#region --- IKeyboard members ---
|
||||
|
||||
public bool this[Keys k]
|
||||
{
|
||||
get { return keys[(int)k]; }
|
||||
set
|
||||
internal set
|
||||
{
|
||||
/*keys[(int)k] = value;*/
|
||||
throw new NotImplementedException();
|
||||
keys[(int)k] = value;
|
||||
//throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue