Я использую ngx-material-keyboard в своем приложении Angular.
Я заметил, что клавиша Shift ведет себя странно при нажатии/нажатии:
- ожидается: после изменения представления букв в нижнем регистре на прописные, при нажатии на одну из этих букв в верхнем регистре клавиатура автоматически переключается обратно в нижний регистр
- наблюдалось: после изменения представления букв в нижнем регистре на прописные, при нажатии одной из этих букв в верхнем регистре клавиатура остается в верхнем регистре (клавиша Shift ведет себя идентично клавиша Caps Lock)
Мои ожидания исходят от экранных клавиатур на моем телефоне (например, в чат-приложениях). Являются ли мои обоснованными ожидания и оправдано ли мое раздражение?
Воспроизведите его здесь: демонстрация ngx-material-keyboard
Насколько я вижу, никто не создавал проблему, которую я считаю странно, поэтому я сначала спрашиваю здесь (и, кажется, никто не обратился к этому и в SO).
Кто-нибудь знает, как это исправить? (Я разветвил репозиторий, поэтому я могу изменить код , но, к сожалению, я не могу понять, как происходит переключение регистра букв и как заставить обработчик сдвига переключаться на верхний регистр только одним кликом, а не постоянно.)
Вот части кода, которые я считаю актуальными:
В клавиатуре.components.ts:
public onShiftClick(): void {
this.modifier = MatKeyboardComponent.invertShiftModifier(this.modifier);
this.shiftClick.next();
}
private static invertShiftModifier(modifier: KeyboardModifier): KeyboardModifier {
switch (modifier) {
case KeyboardModifier.None:
return KeyboardModifier.Shift;
case KeyboardModifier.Alt:
return KeyboardModifier.ShiftAlt;
case KeyboardModifier.ShiftAlt:
return KeyboardModifier.Alt;
case KeyboardModifier.Shift:
return KeyboardModifier.None;
}
}
И в файле keyboard-key-component.ts:
public onClick(event: MouseEvent): void {
[...]
// TODO: if current modifier is KeyboardModifier.Shift
// do the invert
}