@@ -22,7 +22,7 @@ use std::collections::{HashMap, HashSet};
2222use std:: mem;
2323use std:: ops:: RangeInclusive ;
2424
25- use keyboard_types:: { Code , Key , KeyState , KeyboardEvent , Location , Modifiers } ;
25+ use keyboard_types:: { Code , Key , KeyState , KeyboardEvent , Location , Modifiers , NamedKey } ;
2626
2727use winapi:: shared:: minwindef:: { HKL , INT , LPARAM , UINT , WPARAM } ;
2828use winapi:: shared:: ntdef:: SHORT ;
@@ -260,104 +260,104 @@ fn scan_to_code(scan_code: u32) -> Code {
260260
261261fn vk_to_key ( vk : VkCode ) -> Option < Key > {
262262 Some ( match vk as INT {
263- VK_CANCEL => Key :: Cancel ,
264- VK_BACK => Key :: Backspace ,
265- VK_TAB => Key :: Tab ,
266- VK_CLEAR => Key :: Clear ,
267- VK_RETURN => Key :: Enter ,
268- VK_SHIFT | VK_LSHIFT | VK_RSHIFT => Key :: Shift ,
269- VK_CONTROL | VK_LCONTROL | VK_RCONTROL => Key :: Control ,
270- VK_MENU | VK_LMENU | VK_RMENU => Key :: Alt ,
271- VK_PAUSE => Key :: Pause ,
272- VK_CAPITAL => Key :: CapsLock ,
263+ VK_CANCEL => Key :: Named ( NamedKey :: Cancel ) ,
264+ VK_BACK => Key :: Named ( NamedKey :: Backspace ) ,
265+ VK_TAB => Key :: Named ( NamedKey :: Tab ) ,
266+ VK_CLEAR => Key :: Named ( NamedKey :: Clear ) ,
267+ VK_RETURN => Key :: Named ( NamedKey :: Enter ) ,
268+ VK_SHIFT | VK_LSHIFT | VK_RSHIFT => Key :: Named ( NamedKey :: Shift ) ,
269+ VK_CONTROL | VK_LCONTROL | VK_RCONTROL => Key :: Named ( NamedKey :: Control ) ,
270+ VK_MENU | VK_LMENU | VK_RMENU => Key :: Named ( NamedKey :: Alt ) ,
271+ VK_PAUSE => Key :: Named ( NamedKey :: Pause ) ,
272+ VK_CAPITAL => Key :: Named ( NamedKey :: CapsLock ) ,
273273 // TODO: disambiguate kana and hangul? same vk
274- VK_KANA => Key :: KanaMode ,
275- VK_JUNJA => Key :: JunjaMode ,
276- VK_FINAL => Key :: FinalMode ,
277- VK_KANJI => Key :: KanjiMode ,
278- VK_ESCAPE => Key :: Escape ,
279- VK_NONCONVERT => Key :: NonConvert ,
280- VK_ACCEPT => Key :: Accept ,
281- VK_PRIOR => Key :: PageUp ,
282- VK_NEXT => Key :: PageDown ,
283- VK_END => Key :: End ,
284- VK_HOME => Key :: Home ,
285- VK_LEFT => Key :: ArrowLeft ,
286- VK_UP => Key :: ArrowUp ,
287- VK_RIGHT => Key :: ArrowRight ,
288- VK_DOWN => Key :: ArrowDown ,
289- VK_SELECT => Key :: Select ,
290- VK_PRINT => Key :: Print ,
291- VK_EXECUTE => Key :: Execute ,
292- VK_SNAPSHOT => Key :: PrintScreen ,
293- VK_INSERT => Key :: Insert ,
294- VK_DELETE => Key :: Delete ,
295- VK_HELP => Key :: Help ,
296- VK_LWIN | VK_RWIN => Key :: Meta ,
297- VK_APPS => Key :: ContextMenu ,
298- VK_SLEEP => Key :: Standby ,
299- VK_F1 => Key :: F1 ,
300- VK_F2 => Key :: F2 ,
301- VK_F3 => Key :: F3 ,
302- VK_F4 => Key :: F4 ,
303- VK_F5 => Key :: F5 ,
304- VK_F6 => Key :: F6 ,
305- VK_F7 => Key :: F7 ,
306- VK_F8 => Key :: F8 ,
307- VK_F9 => Key :: F9 ,
308- VK_F10 => Key :: F10 ,
309- VK_F11 => Key :: F11 ,
310- VK_F12 => Key :: F12 ,
311- VK_NUMLOCK => Key :: NumLock ,
312- VK_SCROLL => Key :: ScrollLock ,
313- VK_BROWSER_BACK => Key :: BrowserBack ,
314- VK_BROWSER_FORWARD => Key :: BrowserForward ,
315- VK_BROWSER_REFRESH => Key :: BrowserRefresh ,
316- VK_BROWSER_STOP => Key :: BrowserStop ,
317- VK_BROWSER_SEARCH => Key :: BrowserSearch ,
318- VK_BROWSER_FAVORITES => Key :: BrowserFavorites ,
319- VK_BROWSER_HOME => Key :: BrowserHome ,
320- VK_VOLUME_MUTE => Key :: AudioVolumeMute ,
321- VK_VOLUME_DOWN => Key :: AudioVolumeDown ,
322- VK_VOLUME_UP => Key :: AudioVolumeUp ,
323- VK_MEDIA_NEXT_TRACK => Key :: MediaTrackNext ,
324- VK_MEDIA_PREV_TRACK => Key :: MediaTrackPrevious ,
325- VK_MEDIA_STOP => Key :: MediaStop ,
326- VK_MEDIA_PLAY_PAUSE => Key :: MediaPlayPause ,
327- VK_LAUNCH_MAIL => Key :: LaunchMail ,
328- VK_LAUNCH_MEDIA_SELECT => Key :: LaunchMediaPlayer ,
329- VK_LAUNCH_APP1 => Key :: LaunchApplication1 ,
330- VK_LAUNCH_APP2 => Key :: LaunchApplication2 ,
331- VK_OEM_ATTN => Key :: Alphanumeric ,
332- VK_CONVERT => Key :: Convert ,
333- VK_MODECHANGE => Key :: ModeChange ,
334- VK_PROCESSKEY => Key :: Process ,
335- VK_ATTN => Key :: Attn ,
336- VK_CRSEL => Key :: CrSel ,
337- VK_EXSEL => Key :: ExSel ,
338- VK_EREOF => Key :: EraseEof ,
339- VK_PLAY => Key :: Play ,
340- VK_ZOOM => Key :: ZoomToggle ,
341- VK_OEM_CLEAR => Key :: Clear ,
274+ VK_KANA => Key :: Named ( NamedKey :: KanaMode ) ,
275+ VK_JUNJA => Key :: Named ( NamedKey :: JunjaMode ) ,
276+ VK_FINAL => Key :: Named ( NamedKey :: FinalMode ) ,
277+ VK_KANJI => Key :: Named ( NamedKey :: KanjiMode ) ,
278+ VK_ESCAPE => Key :: Named ( NamedKey :: Escape ) ,
279+ VK_NONCONVERT => Key :: Named ( NamedKey :: NonConvert ) ,
280+ VK_ACCEPT => Key :: Named ( NamedKey :: Accept ) ,
281+ VK_PRIOR => Key :: Named ( NamedKey :: PageUp ) ,
282+ VK_NEXT => Key :: Named ( NamedKey :: PageDown ) ,
283+ VK_END => Key :: Named ( NamedKey :: End ) ,
284+ VK_HOME => Key :: Named ( NamedKey :: Home ) ,
285+ VK_LEFT => Key :: Named ( NamedKey :: ArrowLeft ) ,
286+ VK_UP => Key :: Named ( NamedKey :: ArrowUp ) ,
287+ VK_RIGHT => Key :: Named ( NamedKey :: ArrowRight ) ,
288+ VK_DOWN => Key :: Named ( NamedKey :: ArrowDown ) ,
289+ VK_SELECT => Key :: Named ( NamedKey :: Select ) ,
290+ VK_PRINT => Key :: Named ( NamedKey :: Print ) ,
291+ VK_EXECUTE => Key :: Named ( NamedKey :: Execute ) ,
292+ VK_SNAPSHOT => Key :: Named ( NamedKey :: PrintScreen ) ,
293+ VK_INSERT => Key :: Named ( NamedKey :: Insert ) ,
294+ VK_DELETE => Key :: Named ( NamedKey :: Delete ) ,
295+ VK_HELP => Key :: Named ( NamedKey :: Help ) ,
296+ VK_LWIN | VK_RWIN => Key :: Named ( NamedKey :: Meta ) ,
297+ VK_APPS => Key :: Named ( NamedKey :: ContextMenu ) ,
298+ VK_SLEEP => Key :: Named ( NamedKey :: Standby ) ,
299+ VK_F1 => Key :: Named ( NamedKey :: F1 ) ,
300+ VK_F2 => Key :: Named ( NamedKey :: F2 ) ,
301+ VK_F3 => Key :: Named ( NamedKey :: F3 ) ,
302+ VK_F4 => Key :: Named ( NamedKey :: F4 ) ,
303+ VK_F5 => Key :: Named ( NamedKey :: F5 ) ,
304+ VK_F6 => Key :: Named ( NamedKey :: F6 ) ,
305+ VK_F7 => Key :: Named ( NamedKey :: F7 ) ,
306+ VK_F8 => Key :: Named ( NamedKey :: F8 ) ,
307+ VK_F9 => Key :: Named ( NamedKey :: F9 ) ,
308+ VK_F10 => Key :: Named ( NamedKey :: F10 ) ,
309+ VK_F11 => Key :: Named ( NamedKey :: F11 ) ,
310+ VK_F12 => Key :: Named ( NamedKey :: F12 ) ,
311+ VK_NUMLOCK => Key :: Named ( NamedKey :: NumLock ) ,
312+ VK_SCROLL => Key :: Named ( NamedKey :: ScrollLock ) ,
313+ VK_BROWSER_BACK => Key :: Named ( NamedKey :: BrowserBack ) ,
314+ VK_BROWSER_FORWARD => Key :: Named ( NamedKey :: BrowserForward ) ,
315+ VK_BROWSER_REFRESH => Key :: Named ( NamedKey :: BrowserRefresh ) ,
316+ VK_BROWSER_STOP => Key :: Named ( NamedKey :: BrowserStop ) ,
317+ VK_BROWSER_SEARCH => Key :: Named ( NamedKey :: BrowserSearch ) ,
318+ VK_BROWSER_FAVORITES => Key :: Named ( NamedKey :: BrowserFavorites ) ,
319+ VK_BROWSER_HOME => Key :: Named ( NamedKey :: BrowserHome ) ,
320+ VK_VOLUME_MUTE => Key :: Named ( NamedKey :: AudioVolumeMute ) ,
321+ VK_VOLUME_DOWN => Key :: Named ( NamedKey :: AudioVolumeDown ) ,
322+ VK_VOLUME_UP => Key :: Named ( NamedKey :: AudioVolumeUp ) ,
323+ VK_MEDIA_NEXT_TRACK => Key :: Named ( NamedKey :: MediaTrackNext ) ,
324+ VK_MEDIA_PREV_TRACK => Key :: Named ( NamedKey :: MediaTrackPrevious ) ,
325+ VK_MEDIA_STOP => Key :: Named ( NamedKey :: MediaStop ) ,
326+ VK_MEDIA_PLAY_PAUSE => Key :: Named ( NamedKey :: MediaPlayPause ) ,
327+ VK_LAUNCH_MAIL => Key :: Named ( NamedKey :: LaunchMail ) ,
328+ VK_LAUNCH_MEDIA_SELECT => Key :: Named ( NamedKey :: LaunchMediaPlayer ) ,
329+ VK_LAUNCH_APP1 => Key :: Named ( NamedKey :: LaunchApplication1 ) ,
330+ VK_LAUNCH_APP2 => Key :: Named ( NamedKey :: LaunchApplication2 ) ,
331+ VK_OEM_ATTN => Key :: Named ( NamedKey :: Alphanumeric ) ,
332+ VK_CONVERT => Key :: Named ( NamedKey :: Convert ) ,
333+ VK_MODECHANGE => Key :: Named ( NamedKey :: ModeChange ) ,
334+ VK_PROCESSKEY => Key :: Named ( NamedKey :: Process ) ,
335+ VK_ATTN => Key :: Named ( NamedKey :: Attn ) ,
336+ VK_CRSEL => Key :: Named ( NamedKey :: CrSel ) ,
337+ VK_EXSEL => Key :: Named ( NamedKey :: ExSel ) ,
338+ VK_EREOF => Key :: Named ( NamedKey :: EraseEof ) ,
339+ VK_PLAY => Key :: Named ( NamedKey :: Play ) ,
340+ VK_ZOOM => Key :: Named ( NamedKey :: ZoomToggle ) ,
341+ VK_OEM_CLEAR => Key :: Named ( NamedKey :: Clear ) ,
342342 _ => return None ,
343343 } )
344344}
345345
346346fn code_unit_to_key ( code_unit : u32 ) -> Key {
347347 match code_unit {
348- 0x8 | 0x7F => Key :: Backspace ,
349- 0x9 => Key :: Tab ,
350- 0xA | 0xD => Key :: Enter ,
351- 0x1B => Key :: Escape ,
348+ 0x8 | 0x7F => Key :: Named ( NamedKey :: Backspace ) ,
349+ 0x9 => Key :: Named ( NamedKey :: Tab ) ,
350+ 0xA | 0xD => Key :: Named ( NamedKey :: Enter ) ,
351+ 0x1B => Key :: Named ( NamedKey :: Escape ) ,
352352 _ if code_unit >= 0x20 => {
353353 if let Some ( c) = std:: char:: from_u32 ( code_unit) {
354354 Key :: Character ( c. to_string ( ) )
355355 } else {
356356 // UTF-16 error, very unlikely
357- Key :: Unidentified
357+ Key :: Named ( NamedKey :: Unidentified )
358358 }
359359 }
360- _ => Key :: Unidentified ,
360+ _ => Key :: Named ( NamedKey :: Unidentified ) ,
361361 }
362362}
363363
@@ -672,7 +672,7 @@ impl KeyboardState {
672672 } else {
673673 let mapped = self . map_vk ( vk) ;
674674 if mapped >= ( 1 << 31 ) {
675- Key :: Dead
675+ Key :: Named ( NamedKey :: Dead )
676676 } else {
677677 code_unit_to_key ( mapped)
678678 }
0 commit comments