@@ -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 } ;
2626use windows_sys:: Win32 :: {
2727 Foundation :: { HWND , LPARAM , WPARAM } ,
2828 System :: SystemServices :: { MK_CONTROL , MK_SHIFT } ,
@@ -247,104 +247,104 @@ fn scan_to_code(scan_code: u32) -> Code {
247247
248248fn vk_to_key ( vk : VkCode ) -> Option < Key > {
249249 Some ( match vk as u16 {
250- VK_CANCEL => Key :: Cancel ,
251- VK_BACK => Key :: Backspace ,
252- VK_TAB => Key :: Tab ,
253- VK_CLEAR => Key :: Clear ,
254- VK_RETURN => Key :: Enter ,
255- VK_SHIFT | VK_LSHIFT | VK_RSHIFT => Key :: Shift ,
256- VK_CONTROL | VK_LCONTROL | VK_RCONTROL => Key :: Control ,
257- VK_MENU | VK_LMENU | VK_RMENU => Key :: Alt ,
258- VK_PAUSE => Key :: Pause ,
259- VK_CAPITAL => Key :: CapsLock ,
250+ VK_CANCEL => Key :: Named ( NamedKey :: Cancel ) ,
251+ VK_BACK => Key :: Named ( NamedKey :: Backspace ) ,
252+ VK_TAB => Key :: Named ( NamedKey :: Tab ) ,
253+ VK_CLEAR => Key :: Named ( NamedKey :: Clear ) ,
254+ VK_RETURN => Key :: Named ( NamedKey :: Enter ) ,
255+ VK_SHIFT | VK_LSHIFT | VK_RSHIFT => Key :: Named ( NamedKey :: Shift ) ,
256+ VK_CONTROL | VK_LCONTROL | VK_RCONTROL => Key :: Named ( NamedKey :: Control ) ,
257+ VK_MENU | VK_LMENU | VK_RMENU => Key :: Named ( NamedKey :: Alt ) ,
258+ VK_PAUSE => Key :: Named ( NamedKey :: Pause ) ,
259+ VK_CAPITAL => Key :: Named ( NamedKey :: CapsLock ) ,
260260 // TODO: disambiguate kana and hangul? same vk
261- VK_KANA => Key :: KanaMode ,
262- VK_JUNJA => Key :: JunjaMode ,
263- VK_FINAL => Key :: FinalMode ,
264- VK_KANJI => Key :: KanjiMode ,
265- VK_ESCAPE => Key :: Escape ,
266- VK_NONCONVERT => Key :: NonConvert ,
267- VK_ACCEPT => Key :: Accept ,
268- VK_PRIOR => Key :: PageUp ,
269- VK_NEXT => Key :: PageDown ,
270- VK_END => Key :: End ,
271- VK_HOME => Key :: Home ,
272- VK_LEFT => Key :: ArrowLeft ,
273- VK_UP => Key :: ArrowUp ,
274- VK_RIGHT => Key :: ArrowRight ,
275- VK_DOWN => Key :: ArrowDown ,
276- VK_SELECT => Key :: Select ,
277- VK_PRINT => Key :: Print ,
278- VK_EXECUTE => Key :: Execute ,
279- VK_SNAPSHOT => Key :: PrintScreen ,
280- VK_INSERT => Key :: Insert ,
281- VK_DELETE => Key :: Delete ,
282- VK_HELP => Key :: Help ,
283- VK_LWIN | VK_RWIN => Key :: Meta ,
284- VK_APPS => Key :: ContextMenu ,
285- VK_SLEEP => Key :: Standby ,
286- VK_F1 => Key :: F1 ,
287- VK_F2 => Key :: F2 ,
288- VK_F3 => Key :: F3 ,
289- VK_F4 => Key :: F4 ,
290- VK_F5 => Key :: F5 ,
291- VK_F6 => Key :: F6 ,
292- VK_F7 => Key :: F7 ,
293- VK_F8 => Key :: F8 ,
294- VK_F9 => Key :: F9 ,
295- VK_F10 => Key :: F10 ,
296- VK_F11 => Key :: F11 ,
297- VK_F12 => Key :: F12 ,
298- VK_NUMLOCK => Key :: NumLock ,
299- VK_SCROLL => Key :: ScrollLock ,
300- VK_BROWSER_BACK => Key :: BrowserBack ,
301- VK_BROWSER_FORWARD => Key :: BrowserForward ,
302- VK_BROWSER_REFRESH => Key :: BrowserRefresh ,
303- VK_BROWSER_STOP => Key :: BrowserStop ,
304- VK_BROWSER_SEARCH => Key :: BrowserSearch ,
305- VK_BROWSER_FAVORITES => Key :: BrowserFavorites ,
306- VK_BROWSER_HOME => Key :: BrowserHome ,
307- VK_VOLUME_MUTE => Key :: AudioVolumeMute ,
308- VK_VOLUME_DOWN => Key :: AudioVolumeDown ,
309- VK_VOLUME_UP => Key :: AudioVolumeUp ,
310- VK_MEDIA_NEXT_TRACK => Key :: MediaTrackNext ,
311- VK_MEDIA_PREV_TRACK => Key :: MediaTrackPrevious ,
312- VK_MEDIA_STOP => Key :: MediaStop ,
313- VK_MEDIA_PLAY_PAUSE => Key :: MediaPlayPause ,
314- VK_LAUNCH_MAIL => Key :: LaunchMail ,
315- VK_LAUNCH_MEDIA_SELECT => Key :: LaunchMediaPlayer ,
316- VK_LAUNCH_APP1 => Key :: LaunchApplication1 ,
317- VK_LAUNCH_APP2 => Key :: LaunchApplication2 ,
318- VK_OEM_ATTN => Key :: Alphanumeric ,
319- VK_CONVERT => Key :: Convert ,
320- VK_MODECHANGE => Key :: ModeChange ,
321- VK_PROCESSKEY => Key :: Process ,
322- VK_ATTN => Key :: Attn ,
323- VK_CRSEL => Key :: CrSel ,
324- VK_EXSEL => Key :: ExSel ,
325- VK_EREOF => Key :: EraseEof ,
326- VK_PLAY => Key :: Play ,
327- VK_ZOOM => Key :: ZoomToggle ,
328- VK_OEM_CLEAR => Key :: Clear ,
261+ VK_KANA => Key :: Named ( NamedKey :: KanaMode ) ,
262+ VK_JUNJA => Key :: Named ( NamedKey :: JunjaMode ) ,
263+ VK_FINAL => Key :: Named ( NamedKey :: FinalMode ) ,
264+ VK_KANJI => Key :: Named ( NamedKey :: KanjiMode ) ,
265+ VK_ESCAPE => Key :: Named ( NamedKey :: Escape ) ,
266+ VK_NONCONVERT => Key :: Named ( NamedKey :: NonConvert ) ,
267+ VK_ACCEPT => Key :: Named ( NamedKey :: Accept ) ,
268+ VK_PRIOR => Key :: Named ( NamedKey :: PageUp ) ,
269+ VK_NEXT => Key :: Named ( NamedKey :: PageDown ) ,
270+ VK_END => Key :: Named ( NamedKey :: End ) ,
271+ VK_HOME => Key :: Named ( NamedKey :: Home ) ,
272+ VK_LEFT => Key :: Named ( NamedKey :: ArrowLeft ) ,
273+ VK_UP => Key :: Named ( NamedKey :: ArrowUp ) ,
274+ VK_RIGHT => Key :: Named ( NamedKey :: ArrowRight ) ,
275+ VK_DOWN => Key :: Named ( NamedKey :: ArrowDown ) ,
276+ VK_SELECT => Key :: Named ( NamedKey :: Select ) ,
277+ VK_PRINT => Key :: Named ( NamedKey :: Print ) ,
278+ VK_EXECUTE => Key :: Named ( NamedKey :: Execute ) ,
279+ VK_SNAPSHOT => Key :: Named ( NamedKey :: PrintScreen ) ,
280+ VK_INSERT => Key :: Named ( NamedKey :: Insert ) ,
281+ VK_DELETE => Key :: Named ( NamedKey :: Delete ) ,
282+ VK_HELP => Key :: Named ( NamedKey :: Help ) ,
283+ VK_LWIN | VK_RWIN => Key :: Named ( NamedKey :: Meta ) ,
284+ VK_APPS => Key :: Named ( NamedKey :: ContextMenu ) ,
285+ VK_SLEEP => Key :: Named ( NamedKey :: Standby ) ,
286+ VK_F1 => Key :: Named ( NamedKey :: F1 ) ,
287+ VK_F2 => Key :: Named ( NamedKey :: F2 ) ,
288+ VK_F3 => Key :: Named ( NamedKey :: F3 ) ,
289+ VK_F4 => Key :: Named ( NamedKey :: F4 ) ,
290+ VK_F5 => Key :: Named ( NamedKey :: F5 ) ,
291+ VK_F6 => Key :: Named ( NamedKey :: F6 ) ,
292+ VK_F7 => Key :: Named ( NamedKey :: F7 ) ,
293+ VK_F8 => Key :: Named ( NamedKey :: F8 ) ,
294+ VK_F9 => Key :: Named ( NamedKey :: F9 ) ,
295+ VK_F10 => Key :: Named ( NamedKey :: F10 ) ,
296+ VK_F11 => Key :: Named ( NamedKey :: F11 ) ,
297+ VK_F12 => Key :: Named ( NamedKey :: F12 ) ,
298+ VK_NUMLOCK => Key :: Named ( NamedKey :: NumLock ) ,
299+ VK_SCROLL => Key :: Named ( NamedKey :: ScrollLock ) ,
300+ VK_BROWSER_BACK => Key :: Named ( NamedKey :: BrowserBack ) ,
301+ VK_BROWSER_FORWARD => Key :: Named ( NamedKey :: BrowserForward ) ,
302+ VK_BROWSER_REFRESH => Key :: Named ( NamedKey :: BrowserRefresh ) ,
303+ VK_BROWSER_STOP => Key :: Named ( NamedKey :: BrowserStop ) ,
304+ VK_BROWSER_SEARCH => Key :: Named ( NamedKey :: BrowserSearch ) ,
305+ VK_BROWSER_FAVORITES => Key :: Named ( NamedKey :: BrowserFavorites ) ,
306+ VK_BROWSER_HOME => Key :: Named ( NamedKey :: BrowserHome ) ,
307+ VK_VOLUME_MUTE => Key :: Named ( NamedKey :: AudioVolumeMute ) ,
308+ VK_VOLUME_DOWN => Key :: Named ( NamedKey :: AudioVolumeDown ) ,
309+ VK_VOLUME_UP => Key :: Named ( NamedKey :: AudioVolumeUp ) ,
310+ VK_MEDIA_NEXT_TRACK => Key :: Named ( NamedKey :: MediaTrackNext ) ,
311+ VK_MEDIA_PREV_TRACK => Key :: Named ( NamedKey :: MediaTrackPrevious ) ,
312+ VK_MEDIA_STOP => Key :: Named ( NamedKey :: MediaStop ) ,
313+ VK_MEDIA_PLAY_PAUSE => Key :: Named ( NamedKey :: MediaPlayPause ) ,
314+ VK_LAUNCH_MAIL => Key :: Named ( NamedKey :: LaunchMail ) ,
315+ VK_LAUNCH_MEDIA_SELECT => Key :: Named ( NamedKey :: LaunchMediaPlayer ) ,
316+ VK_LAUNCH_APP1 => Key :: Named ( NamedKey :: LaunchApplication1 ) ,
317+ VK_LAUNCH_APP2 => Key :: Named ( NamedKey :: LaunchApplication2 ) ,
318+ VK_OEM_ATTN => Key :: Named ( NamedKey :: Alphanumeric ) ,
319+ VK_CONVERT => Key :: Named ( NamedKey :: Convert ) ,
320+ VK_MODECHANGE => Key :: Named ( NamedKey :: ModeChange ) ,
321+ VK_PROCESSKEY => Key :: Named ( NamedKey :: Process ) ,
322+ VK_ATTN => Key :: Named ( NamedKey :: Attn ) ,
323+ VK_CRSEL => Key :: Named ( NamedKey :: CrSel ) ,
324+ VK_EXSEL => Key :: Named ( NamedKey :: ExSel ) ,
325+ VK_EREOF => Key :: Named ( NamedKey :: EraseEof ) ,
326+ VK_PLAY => Key :: Named ( NamedKey :: Play ) ,
327+ VK_ZOOM => Key :: Named ( NamedKey :: ZoomToggle ) ,
328+ VK_OEM_CLEAR => Key :: Named ( NamedKey :: Clear ) ,
329329 _ => return None ,
330330 } )
331331}
332332
333333fn code_unit_to_key ( code_unit : u32 ) -> Key {
334334 match code_unit {
335- 0x8 | 0x7F => Key :: Backspace ,
336- 0x9 => Key :: Tab ,
337- 0xA | 0xD => Key :: Enter ,
338- 0x1B => Key :: Escape ,
335+ 0x8 | 0x7F => Key :: Named ( NamedKey :: Backspace ) ,
336+ 0x9 => Key :: Named ( NamedKey :: Tab ) ,
337+ 0xA | 0xD => Key :: Named ( NamedKey :: Enter ) ,
338+ 0x1B => Key :: Named ( NamedKey :: Escape ) ,
339339 _ if code_unit >= 0x20 => {
340340 if let Some ( c) = std:: char:: from_u32 ( code_unit) {
341341 Key :: Character ( c. to_string ( ) )
342342 } else {
343343 // UTF-16 error, very unlikely
344- Key :: Unidentified
344+ Key :: Named ( NamedKey :: Unidentified )
345345 }
346346 }
347- _ => Key :: Unidentified ,
347+ _ => Key :: Named ( NamedKey :: Unidentified ) ,
348348 }
349349}
350350
@@ -659,7 +659,7 @@ impl KeyboardState {
659659 } else {
660660 let mapped = self . map_vk ( vk) ;
661661 if mapped >= ( 1 << 31 ) {
662- Key :: Dead
662+ Key :: Named ( NamedKey :: Dead )
663663 } else {
664664 code_unit_to_key ( mapped)
665665 }
0 commit comments