Skip to content

Commit 79b7b3c

Browse files
CHiPs44thejpster
authored andcommitted
Better comments, added numpad AltGr+Shift, test of '<' on Oem5
1 parent e4f0b86 commit 79b7b3c

File tree

1 file changed

+21
-3
lines changed

1 file changed

+21
-3
lines changed

src/layouts/azerty.rs

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ use crate::{DecodedKey, HandleControl, KeyCode, KeyboardLayout, Modifiers};
77
/// The top row spells `AZERTY`.
88
///
99
/// Has a 2-row high Enter key, with Oem5 next to the left shift (ISO format).
10+
///
11+
/// NB: no "dead key" support for now
1012
pub struct Azerty;
1113

1214
impl KeyboardLayout for Azerty {
@@ -19,12 +21,12 @@ impl KeyboardLayout for Azerty {
1921
let map_to_unicode = handle_ctrl == HandleControl::MapLettersToUnicode;
2022
match keycode {
2123
KeyCode::Escape => DecodedKey::Unicode(0x1B.into()),
22-
// Works with Unicode & 850 code page, not 437
24+
// Works with Unicode & 850 code page, not 437 that has neither ¹ or ³
2325
KeyCode::Oem8 => {
2426
if modifiers.is_shifted() {
25-
DecodedKey::Unicode('³') // Not in 437 code page
27+
DecodedKey::Unicode('³')
2628
} else if modifiers.is_altgr() {
27-
DecodedKey::Unicode('¹') // Not in 437 code page
29+
DecodedKey::Unicode('¹')
2830
} else {
2931
DecodedKey::Unicode('²')
3032
}
@@ -46,6 +48,7 @@ impl KeyboardLayout for Azerty {
4648
}
4749
}
4850
KeyCode::Key1 => {
51+
// NB: ˇ & ˛ dead keys with AltGr (+ Shift)
4952
if modifiers.is_shifted() {
5053
DecodedKey::Unicode('1')
5154
} else {
@@ -63,6 +66,7 @@ impl KeyboardLayout for Azerty {
6366
}
6467
}
6568
KeyCode::Key3 => {
69+
// NB: ˘ dead key with AltGr + Shift
6670
if modifiers.is_shifted() {
6771
DecodedKey::Unicode('3')
6872
} else if modifiers.is_altgr() {
@@ -264,6 +268,7 @@ impl KeyboardLayout for Azerty {
264268
}
265269
}
266270
KeyCode::Oem4 => {
271+
// NB: these should be dead keys
267272
if modifiers.is_shifted() {
268273
DecodedKey::Unicode('¨')
269274
} else if modifiers.is_altgr() {
@@ -283,6 +288,7 @@ impl KeyboardLayout for Azerty {
283288
}
284289
}
285290
KeyCode::Oem7 => {
291+
// NB: ´ & ¯ dead keys can be done with AltGr (+ Shift)
286292
if modifiers.is_shifted() {
287293
DecodedKey::Unicode('µ')
288294
} else {
@@ -390,6 +396,7 @@ impl KeyboardLayout for Azerty {
390396
}
391397
}
392398
KeyCode::Oem3 => {
399+
// NB: ´ dead key & Ù can be done with AltGr (+ Shift), but no Ù in code page 437
393400
if modifiers.is_shifted() {
394401
DecodedKey::Unicode('%')
395402
} else {
@@ -493,9 +500,15 @@ impl KeyboardLayout for Azerty {
493500
}
494501
KeyCode::Spacebar => DecodedKey::Unicode(' '),
495502
KeyCode::Delete => DecodedKey::Unicode(127.into()),
503+
// NB: these ones give respectively ÷, × & − with AltGr
496504
KeyCode::NumpadDivide => DecodedKey::Unicode('/'),
497505
KeyCode::NumpadMultiply => DecodedKey::Unicode('*'),
498506
KeyCode::NumpadSubtract => DecodedKey::Unicode('-'),
507+
// NB: this is interesting with AltGr or AltGr+Shift, but Unicode only
508+
// 7: ↖⇖ 8: ↑⇑ 9:↗⇗
509+
// 4: ←⇐ 5: ↔⇔ 6:→⇒
510+
// 1: ↙⇙ 2: ↓⇓ 3:↘⇘
511+
// 0: ↕⇕ .: , (space: e2 80 af in UTF-8)
499512
KeyCode::Numpad7 => {
500513
if modifiers.numlock {
501514
DecodedKey::Unicode('7')
@@ -517,6 +530,7 @@ impl KeyboardLayout for Azerty {
517530
DecodedKey::RawKey(KeyCode::PageUp)
518531
}
519532
}
533+
// NB: this one gives nothing different with AltGr
520534
KeyCode::NumpadAdd => DecodedKey::Unicode('+'),
521535
KeyCode::Numpad4 => {
522536
if modifiers.numlock {
@@ -602,6 +616,10 @@ mod test {
602616
k.process_keyevent(KeyEvent::new(KeyCode::Key4, KeyState::Down)),
603617
Some(DecodedKey::Unicode('\''))
604618
);
619+
assert_eq!(
620+
k.process_keyevent(KeyEvent::new(KeyCode::Oem5, KeyState::Down)),
621+
Some(DecodedKey::Unicode('<'))
622+
);
605623
assert_eq!(
606624
k.process_keyevent(KeyEvent::new(KeyCode::Oem7, KeyState::Down)),
607625
Some(DecodedKey::Unicode('*'))

0 commit comments

Comments
 (0)