@@ -4,27 +4,53 @@ use std::collections::HashMap;
4
4
5
5
use pc_keyboard:: { DecodedKey , KeyCode , KeyboardLayout , Modifiers } ;
6
6
7
- #[ derive( Debug , Clone , Copy , PartialEq , Eq ) ]
8
- enum KeyboardKind {
9
- Ansi ,
10
- Iso ,
11
- }
12
-
13
7
fn main ( ) {
14
8
println ! ( "Keyboard Layouts" ) ;
15
9
println ! ( "================" ) ;
16
10
println ! ( ) ;
17
- println ! ( "Us104Key:" ) ;
18
- show_kb ( KeyboardKind :: Ansi , & pc_keyboard:: layouts:: Us104Key ) ;
19
- println ! ( "Uk105Key:" ) ;
20
- show_kb ( KeyboardKind :: Iso , & pc_keyboard:: layouts:: Uk105Key ) ;
21
- println ! ( "Colemak:" ) ;
22
- show_kb ( KeyboardKind :: Ansi , & pc_keyboard:: layouts:: Colemak ) ;
23
- println ! ( "Azerty:" ) ;
24
- show_kb ( KeyboardKind :: Iso , & pc_keyboard:: layouts:: Azerty ) ;
11
+ println ! ( "/// ****************************************" ) ;
12
+ println ! ( "/// # Azerty" ) ;
13
+ println ! ( "///" ) ;
14
+ show_kb ( & pc_keyboard:: layouts:: Azerty ) ;
15
+ println ! ( "/// ****************************************" ) ;
16
+ println ! ( "/// # Colemak" ) ;
17
+ println ! ( "///" ) ;
18
+ show_kb ( & pc_keyboard:: layouts:: Colemak ) ;
19
+ println ! ( "/// ****************************************" ) ;
20
+ println ! ( "/// # De105Key" ) ;
21
+ println ! ( "///" ) ;
22
+ show_kb ( & pc_keyboard:: layouts:: De105Key ) ;
23
+ println ! ( "/// ****************************************" ) ;
24
+ println ! ( "/// # Dvorak104Key" ) ;
25
+ println ! ( "///" ) ;
26
+ show_kb ( & pc_keyboard:: layouts:: Dvorak104Key ) ;
27
+ println ! ( "/// ****************************************" ) ;
28
+ println ! ( "/// # DVP104Key" ) ;
29
+ println ! ( "///" ) ;
30
+ show_kb ( & pc_keyboard:: layouts:: DVP104Key ) ;
31
+ println ! ( "/// ****************************************" ) ;
32
+ println ! ( "/// # FiSe105Key" ) ;
33
+ println ! ( "///" ) ;
34
+ show_kb ( & pc_keyboard:: layouts:: FiSe105Key ) ;
35
+ // println!("/// ****************************************");
36
+ // println!("/// # Jis109Key");
37
+ // println!("///");
38
+ // show_kb(&pc_keyboard::layouts::Jis109Key);
39
+ println ! ( "/// ****************************************" ) ;
40
+ println ! ( "/// # No105Key" ) ;
41
+ println ! ( "///" ) ;
42
+ show_kb ( & pc_keyboard:: layouts:: No105Key ) ;
43
+ println ! ( "/// ****************************************" ) ;
44
+ println ! ( "/// # Uk105Key" ) ;
45
+ println ! ( "///" ) ;
46
+ show_kb ( & pc_keyboard:: layouts:: Uk105Key ) ;
47
+ println ! ( "/// ****************************************" ) ;
48
+ println ! ( "/// # Us104Key" ) ;
49
+ println ! ( "///" ) ;
50
+ show_kb ( & pc_keyboard:: layouts:: Us104Key ) ;
25
51
}
26
52
27
- fn show_kb ( kind : KeyboardKind , layout : & dyn KeyboardLayout ) {
53
+ fn show_kb ( layout : & dyn KeyboardLayout ) {
28
54
let mut modifiers = Modifiers {
29
55
lshift : false ,
30
56
rshift : false ,
@@ -37,37 +63,37 @@ fn show_kb(kind: KeyboardKind, layout: &dyn KeyboardLayout) {
37
63
rctrl2 : false ,
38
64
} ;
39
65
println ! ( "/// ## Unmodified" ) ;
40
- show_kb_modifiers ( kind , layout, & modifiers) ;
66
+ show_kb_modifiers ( layout, & modifiers) ;
41
67
42
68
modifiers. capslock = true ;
43
69
println ! ( "/// ## Caps Lock" ) ;
44
- show_kb_modifiers ( kind , layout, & modifiers) ;
70
+ show_kb_modifiers ( layout, & modifiers) ;
45
71
modifiers. capslock = false ;
46
72
47
73
modifiers. lshift = true ;
48
74
println ! ( "/// ## Shifted" ) ;
49
- show_kb_modifiers ( kind , layout, & modifiers) ;
75
+ show_kb_modifiers ( layout, & modifiers) ;
50
76
modifiers. lshift = false ;
51
77
52
78
modifiers. rctrl = true ;
53
79
println ! ( "/// ## Control" ) ;
54
- show_kb_modifiers ( kind , layout, & modifiers) ;
80
+ show_kb_modifiers ( layout, & modifiers) ;
55
81
modifiers. rctrl = false ;
56
82
57
83
modifiers. ralt = true ;
58
84
println ! ( "/// ## AltGr" ) ;
59
- show_kb_modifiers ( kind , layout, & modifiers) ;
85
+ show_kb_modifiers ( layout, & modifiers) ;
60
86
modifiers. ralt = false ;
61
87
62
88
modifiers. ralt = true ;
63
89
modifiers. lshift = true ;
64
90
println ! ( "/// ## Shift AltGr" ) ;
65
- show_kb_modifiers ( kind , layout, & modifiers) ;
91
+ show_kb_modifiers ( layout, & modifiers) ;
66
92
modifiers. ralt = false ;
67
93
modifiers. lshift = false ;
68
94
}
69
95
70
- fn show_kb_modifiers ( kind : KeyboardKind , layout : & dyn KeyboardLayout , modifiers : & Modifiers ) {
96
+ fn show_kb_modifiers ( layout : & dyn KeyboardLayout , modifiers : & Modifiers ) {
71
97
let mut map = Map :: new ( modifiers) ;
72
98
map. insert ( "esc" , KeyCode :: Escape , layout) ;
73
99
map. insert ( "oem8" , KeyCode :: Oem8 , layout) ;
@@ -138,11 +164,17 @@ fn show_kb_modifiers(kind: KeyboardKind, layout: &dyn KeyboardLayout, modifiers:
138
164
map. insert ( "b" , KeyCode :: B , layout) ;
139
165
map. insert ( "n" , KeyCode :: N , layout) ;
140
166
map. insert ( "m" , KeyCode :: M , layout) ;
141
- if kind == KeyboardKind :: Iso {
142
- map. insert ( "oem5" , KeyCode :: Oem5 , layout) ;
143
- map. print_iso ( ) ;
144
- } else {
145
- map. print_ansi ( ) ;
167
+ match layout. get_physical ( ) {
168
+ pc_keyboard:: PhysicalKeyboard :: Iso => {
169
+ map. insert ( "oem5" , KeyCode :: Oem5 , layout) ;
170
+ map. print_iso ( ) ;
171
+ }
172
+ pc_keyboard:: PhysicalKeyboard :: Ansi => {
173
+ map. print_ansi ( ) ;
174
+ }
175
+ pc_keyboard:: PhysicalKeyboard :: Jis => {
176
+ todo ! ( )
177
+ }
146
178
}
147
179
}
148
180
@@ -262,7 +294,7 @@ impl Map {
262
294
/// └────┘ └────┴────┴────┴────┘ └────┴────┴────┴────┘ └────┴────┴────┴────┘ └────┴────┴────┘
263
295
///
264
296
/// ┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬─────────┐ ┌────┬────┬────┐ ┌────┬────┬────┬────┐
265
- /// │{o8}│{k1}│{k2}│{k3}│{k4}│{k5}│{k6}│{k7}│{k8}│{k9}│{k0}│{om}│{ol}│{bs} │ │ │ │ │ │ │{nd}│{nm}│{ns}│
297
+ /// │{o8}│{k1}│{k2}│{k3}│{k4}│{k5}│{k6}│{k7}│{k8}│{k9}│{k0}│{om}│{ol}│ {bs} │ │ │ │ │ │ │{nd}│{nm}│{ns}│
266
298
/// ├────┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬────────┤ ├────┼────┼────┤ ├────┼────┼────┼────┤
267
299
/// │{tb} │{kq}│{kw}│{ke}│{kr}│{kt}│{ky}│{ku}│{ki}│{ko}│{kp}│{o4}│{o6}│ {o7} │ │{de}│ │ │ │{n7}│{n8}│{n9}│ │
268
300
/// ├─────┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴────────┤ └────┴────┴────┘ ├────┼────┼────┤{nl}│
@@ -358,9 +390,9 @@ impl Map {
358
390
/// └────┘ └────┴────┴────┴────┘ └────┴────┴────┴────┘ └────┴────┴────┴────┘ └────┴────┴────┘
359
391
///
360
392
/// ┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬─────────┐ ┌────┬────┬────┐ ┌────┬────┬────┬────┐
361
- /// │{o8}│{k1}│{k2}│{k3}│{k4}│{k5}│{k6}│{k7}│{k8}│{k9}│{k0}│{om}│{ol}│{bs} │ │ │ │ │ │ │{nd}│{nm}│{ns}│
393
+ /// │{o8}│{k1}│{k2}│{k3}│{k4}│{k5}│{k6}│{k7}│{k8}│{k9}│{k0}│{om}│{ol}│ {bs} │ │ │ │ │ │ │{nd}│{nm}│{ns}│
362
394
/// ├────┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬────────┤ ├────┼────┼────┤ ├────┼────┼────┼────┤
363
- /// │{tb} │{kq}│{kw}│{ke}│{kr}│{kt}│{ky}│{ku}│{ki}│{ko}│{kp}│{o4}│{o6}│ {en} │ │{de}│ │ │ │{n7}│{n8}│{n9}│ │
395
+ /// │{tb} │{kq}│{kw}│{ke}│{kr}│{kt}│{ky}│{ku}│{ki}│{ko}│{kp}│{o4}│{o6}│ {en} │ │{de}│ │ │ │{n7}│{n8}│{n9}│ │
364
396
/// ├─────┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┐ │ └────┴────┴────┘ ├────┼────┼────┤{nl}│
365
397
/// │ │{ka}│{ks}│{kd}│{kf}│{kg}│{kh}│{kj}│{kk}│{kl}│{o1}│{o3}│{o7}│ │ │{n4}│{n5}│{n6}│ │
366
398
/// ├────┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴────┴───────┤ ┌────┐ ├────┼────┼────┼────┤
0 commit comments