Skip to content
Snippets Groups Projects
keyboard.component.ts 1.17 KiB
Newer Older
rhenck's avatar
rhenck committed
import {
  Component, EventEmitter, Input, Output
} from '@angular/core';

@Component({
  selector: 'aspect-keyboard',
  templateUrl: './keyboard.component.html',
  styleUrls: ['./keyboard.component.scss']
})
export class KeyboardComponent {
  @Input() showFrenchCharacters!: boolean;
  @Output() characterClicked: EventEmitter<string> = new EventEmitter<string>();
  @Output() enterClicked = new EventEmitter();
  @Output() spaceClicked = new EventEmitter();
  @Output() backspaceClicked = new EventEmitter();

  shift = false;
  numberKeys: [string, string][] = [['1', '!'], ['2', '"'], ['3', '§'], ['4', '$'], ['5', '%'], ['6', '&'],
    ['7', '/'], ['8', '('], ['9', ')'], ['0', '='], ['ß', '?']];

  frenchSpecialCharacters = ['â', 'à', 'æ', 'ê', 'è', 'é', 'ë', 'î', 'ï', 'ô', 'ò', 'œ', 'û', 'ù', 'ü', 'ç'];
rhenck's avatar
rhenck committed

  enterCharacter(pressedCharacter: string): void {
    this.characterClicked.emit(this.shift ? pressedCharacter.toUpperCase() : pressedCharacter);
  }

  enterAltCharacter(pressedCharacter: [string, string]): void {
    this.characterClicked.emit(this.shift ? pressedCharacter[1] : pressedCharacter[0]);
  }

rhenck's avatar
rhenck committed
  toggleShift(): void {
    this.shift = !this.shift;
  }
}