handleKeystroke method
Implementation
void handleKeystroke(WindowKeyboardEvent event) {
if (event.keyEvent is KeyUpEvent) {
sequence.clear();
return;
} else if (event.keyEvent is KeyRepeatEvent) {
return;
}
if (sequence.isNotEmpty) {
if (event.keyEvent.logicalKey == LogicalKeyboardKey.escape) {
// handle aborts
sequence.clear();
} else if (sequence.length > 8) {
// just in case we wrongly pick up normal text editing actions as key sequences
sequence.clear();
} else {
sequence.add(event.keyEvent.logicalKey);
final String signature = signatureOf(sequence);
// dispatch the corresponding shortcut
if (shortcuts.containsKey(signature)) {
shortcuts[signature]!.call();
sequence.clear();
}
}
} else if ([
LogicalKeyboardKey.metaLeft,
LogicalKeyboardKey.metaRight,
LogicalKeyboardKey.altLeft,
LogicalKeyboardKey.altRight,
].contains(event.keyEvent.logicalKey)) {
sequence.add(event.keyEvent.logicalKey);
}
}