(event: WaveKeyboardEvent, keyDescription: string)
| 186 | } |
| 187 | |
| 188 | function checkKeyPressed(event: WaveKeyboardEvent, keyDescription: string): boolean { |
| 189 | let keyPress = parseKeyDescription(keyDescription); |
| 190 | if (notMod(keyPress.mods.Option, event.option)) { |
| 191 | return false; |
| 192 | } |
| 193 | if (notMod(keyPress.mods.Cmd, event.cmd)) { |
| 194 | return false; |
| 195 | } |
| 196 | if (notMod(keyPress.mods.Shift, event.shift)) { |
| 197 | return false; |
| 198 | } |
| 199 | if (notMod(keyPress.mods.Ctrl, event.control)) { |
| 200 | return false; |
| 201 | } |
| 202 | if (notMod(keyPress.mods.Alt, event.alt)) { |
| 203 | return false; |
| 204 | } |
| 205 | if (notMod(keyPress.mods.Meta, event.meta)) { |
| 206 | return false; |
| 207 | } |
| 208 | let eventKey = ""; |
| 209 | let descKey = keyPress.key; |
| 210 | if (keyPress.keyType == KeyTypeCode) { |
| 211 | eventKey = event.code; |
| 212 | } |
| 213 | if (keyPress.keyType == KeyTypeKey) { |
| 214 | eventKey = event.key; |
| 215 | if (eventKey != null && eventKey.length == 1 && /[A-Z]/.test(eventKey.charAt(0))) { |
| 216 | // key is upper case A-Z, this means shift is applied, we want to allow |
| 217 | // "Shift:e" as well as "Shift:E" or "E" |
| 218 | eventKey = eventKey.toLocaleLowerCase(); |
| 219 | descKey = descKey.toLocaleLowerCase(); |
| 220 | } else if (eventKey == " ") { |
| 221 | eventKey = "Space"; |
| 222 | // a space key is shown as " ", we want users to be able to set space key as "Space" or " ", whichever they prefer |
| 223 | } |
| 224 | } |
| 225 | if (descKey != eventKey) { |
| 226 | return false; |
| 227 | } |
| 228 | return true; |
| 229 | } |
| 230 | |
| 231 | function adaptFromReactOrNativeKeyEvent(event: React.KeyboardEvent | KeyboardEvent): WaveKeyboardEvent { |
| 232 | let rtn: WaveKeyboardEvent = {} as WaveKeyboardEvent; |
no test coverage detected