Skip to content

Commit e0afc98

Browse files
committed
Adjust JIS OemX keys.
1 parent 65f3e76 commit e0afc98

File tree

1 file changed

+43
-16
lines changed

1 file changed

+43
-16
lines changed

src/layouts/jis109.rs

Lines changed: 43 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ use crate::{DecodedKey, HandleControl, KeyCode, KeyboardLayout, Modifiers};
55
/// A standard Japan 106-key (or 109-key including Windows keys) keyboard.
66
///
77
/// Has a small space bar, to fit in extra keys.
8+
///
9+
/// We used <https://www.win.tue.nl/~aeb/linux/kbd/scancodes-8.html> as a
10+
/// reference.
811
pub struct Jis109Key;
912

1013
impl KeyboardLayout for Jis109Key {
@@ -16,11 +19,8 @@ impl KeyboardLayout for Jis109Key {
1619
) -> DecodedKey {
1720
match keycode {
1821
KeyCode::Oem8 => {
19-
if modifiers.is_shifted() {
20-
DecodedKey::Unicode('`')
21-
} else {
22-
DecodedKey::Unicode('@')
23-
}
22+
// hankaku/zenkaku/kanji
23+
DecodedKey::RawKey(KeyCode::Oem8)
2424
}
2525
KeyCode::Escape => DecodedKey::Unicode(0x1B.into()),
2626
KeyCode::Key1 => {
@@ -88,7 +88,7 @@ impl KeyboardLayout for Jis109Key {
8888
}
8989
KeyCode::Key0 => {
9090
if modifiers.is_shifted() {
91-
DecodedKey::Unicode(' ')
91+
DecodedKey::Unicode('~')
9292
} else {
9393
DecodedKey::Unicode('0')
9494
}
@@ -102,46 +102,73 @@ impl KeyboardLayout for Jis109Key {
102102
}
103103
KeyCode::OemPlus => {
104104
if modifiers.is_shifted() {
105-
DecodedKey::Unicode('+')
105+
DecodedKey::Unicode('¯')
106106
} else {
107-
DecodedKey::Unicode(';')
107+
DecodedKey::Unicode('^')
108108
}
109109
}
110110
KeyCode::Oem4 => {
111+
if modifiers.is_shifted() {
112+
DecodedKey::Unicode('`')
113+
} else {
114+
DecodedKey::Unicode('@')
115+
}
116+
}
117+
KeyCode::Oem6 => {
111118
if modifiers.is_shifted() {
112119
DecodedKey::Unicode('{')
113120
} else {
114121
DecodedKey::Unicode('[')
115122
}
116123
}
117-
KeyCode::Oem6 => {
124+
KeyCode::Oem7 => {
118125
if modifiers.is_shifted() {
119126
DecodedKey::Unicode('}')
120127
} else {
121128
DecodedKey::Unicode(']')
122129
}
123130
}
124-
KeyCode::Oem7 => {
131+
KeyCode::Oem1 => {
125132
if modifiers.is_shifted() {
126-
DecodedKey::Unicode('|')
133+
DecodedKey::Unicode('+')
127134
} else {
128-
DecodedKey::Unicode('\\')
135+
DecodedKey::Unicode(';')
129136
}
130137
}
131-
KeyCode::Oem1 => {
138+
KeyCode::Oem3 => {
132139
if modifiers.is_shifted() {
133140
DecodedKey::Unicode('*')
134141
} else {
135142
DecodedKey::Unicode(':')
136143
}
137144
}
138-
KeyCode::Oem3 => {
145+
KeyCode::Oem9 => {
146+
// Muhenkan
147+
DecodedKey::RawKey(keycode)
148+
}
149+
KeyCode::Oem10 => {
150+
// Henkan/Zenkouho
151+
DecodedKey::RawKey(keycode)
152+
}
153+
KeyCode::Oem11 => {
154+
// Hiragana/Katakana
155+
DecodedKey::RawKey(keycode)
156+
}
157+
KeyCode::Oem12 => {
139158
if modifiers.is_shifted() {
140-
DecodedKey::Unicode('~')
159+
DecodedKey::Unicode('_')
141160
} else {
142-
DecodedKey::Unicode('^')
161+
DecodedKey::Unicode('\\')
162+
}
163+
}
164+
KeyCode::Oem13 => {
165+
if modifiers.is_shifted() {
166+
DecodedKey::Unicode('|')
167+
} else {
168+
DecodedKey::Unicode('¥')
143169
}
144170
}
171+
145172
e => {
146173
let us = super::Us104Key;
147174
us.map_keycode(e, modifiers, handle_ctrl)

0 commit comments

Comments
 (0)