pc_keyboard/layouts/
jis109.rs1use crate::{DecodedKey, HandleControl, KeyCode, KeyboardLayout, Modifiers};
4
5pub struct Jis109Key;
12
13impl KeyboardLayout for Jis109Key {
14 fn map_keycode(
15 &self,
16 keycode: KeyCode,
17 modifiers: &Modifiers,
18 handle_ctrl: HandleControl,
19 ) -> DecodedKey {
20 match keycode {
21 KeyCode::Oem8 => {
22 DecodedKey::RawKey(KeyCode::Oem8)
24 }
25 KeyCode::Escape => DecodedKey::Unicode(0x1B.into()),
26 KeyCode::Key1 => {
27 if modifiers.is_shifted() {
28 DecodedKey::Unicode('!')
29 } else {
30 DecodedKey::Unicode('1')
31 }
32 }
33 KeyCode::Key2 => {
34 if modifiers.is_shifted() {
35 DecodedKey::Unicode('"')
36 } else {
37 DecodedKey::Unicode('2')
38 }
39 }
40 KeyCode::Key3 => {
41 if modifiers.is_shifted() {
42 DecodedKey::Unicode('#')
43 } else {
44 DecodedKey::Unicode('3')
45 }
46 }
47 KeyCode::Key4 => {
48 if modifiers.is_shifted() {
49 DecodedKey::Unicode('$')
50 } else {
51 DecodedKey::Unicode('4')
52 }
53 }
54 KeyCode::Key5 => {
55 if modifiers.is_shifted() {
56 DecodedKey::Unicode('%')
57 } else {
58 DecodedKey::Unicode('5')
59 }
60 }
61 KeyCode::Key6 => {
62 if modifiers.is_shifted() {
63 DecodedKey::Unicode('&')
64 } else {
65 DecodedKey::Unicode('6')
66 }
67 }
68 KeyCode::Key7 => {
69 if modifiers.is_shifted() {
70 DecodedKey::Unicode('\'')
71 } else {
72 DecodedKey::Unicode('7')
73 }
74 }
75 KeyCode::Key8 => {
76 if modifiers.is_shifted() {
77 DecodedKey::Unicode('(')
78 } else {
79 DecodedKey::Unicode('8')
80 }
81 }
82 KeyCode::Key9 => {
83 if modifiers.is_shifted() {
84 DecodedKey::Unicode(')')
85 } else {
86 DecodedKey::Unicode('9')
87 }
88 }
89 KeyCode::Key0 => {
90 if modifiers.is_shifted() {
91 DecodedKey::Unicode('~')
92 } else {
93 DecodedKey::Unicode('0')
94 }
95 }
96 KeyCode::OemMinus => {
97 if modifiers.is_shifted() {
98 DecodedKey::Unicode('=')
99 } else {
100 DecodedKey::Unicode('-')
101 }
102 }
103 KeyCode::OemPlus => {
104 if modifiers.is_shifted() {
105 DecodedKey::Unicode('¯')
106 } else {
107 DecodedKey::Unicode('^')
108 }
109 }
110 KeyCode::Oem4 => {
111 if modifiers.is_shifted() {
112 DecodedKey::Unicode('`')
113 } else {
114 DecodedKey::Unicode('@')
115 }
116 }
117 KeyCode::Oem6 => {
118 if modifiers.is_shifted() {
119 DecodedKey::Unicode('{')
120 } else {
121 DecodedKey::Unicode('[')
122 }
123 }
124 KeyCode::Oem7 => {
125 if modifiers.is_shifted() {
126 DecodedKey::Unicode('}')
127 } else {
128 DecodedKey::Unicode(']')
129 }
130 }
131 KeyCode::Oem1 => {
132 if modifiers.is_shifted() {
133 DecodedKey::Unicode('+')
134 } else {
135 DecodedKey::Unicode(';')
136 }
137 }
138 KeyCode::Oem3 => {
139 if modifiers.is_shifted() {
140 DecodedKey::Unicode('*')
141 } else {
142 DecodedKey::Unicode(':')
143 }
144 }
145 KeyCode::Oem9 => {
146 DecodedKey::RawKey(keycode)
148 }
149 KeyCode::Oem10 => {
150 DecodedKey::RawKey(keycode)
152 }
153 KeyCode::Oem11 => {
154 DecodedKey::RawKey(keycode)
156 }
157 KeyCode::Oem12 => {
158 if modifiers.is_shifted() {
159 DecodedKey::Unicode('_')
160 } else {
161 DecodedKey::Unicode('\\')
162 }
163 }
164 KeyCode::Oem13 => {
165 if modifiers.is_shifted() {
166 DecodedKey::Unicode('|')
167 } else {
168 DecodedKey::Unicode('¥')
169 }
170 }
171
172 e => {
173 let us = super::Us104Key;
174 us.map_keycode(e, modifiers, handle_ctrl)
175 }
176 }
177 }
178}