diff --git a/projects/player/modules/keyboard/components/keyboard.component.html b/projects/player/modules/keyboard/components/keyboard.component.html index 8946cd1b03b41df48ae131739ba8dfdbae61d4d0..8048d7cea1d4a8be9814d97c9312da8f8249f917 100644 --- a/projects/player/modules/keyboard/components/keyboard.component.html +++ b/projects/player/modules/keyboard/components/keyboard.component.html @@ -1,23 +1,32 @@ -<div (mousedown)="$event.preventDefault(); $event.stopPropagation()"> +<div class="keyboard-container" (mousedown)="$event.preventDefault(); $event.stopPropagation()"> <div *ngIf="showFrenchCharacters" fxLayout="row wrap" fxLayoutAlign="space-around center" class="specialCharacters"> - <button *ngFor="let key of ['â', 'à ', 'æ', 'ê', 'è', 'é', 'ë', 'î', 'ï', 'ô', 'ò', 'œ', 'û', 'ù', 'ü', 'ç']; let i = index" + <button *ngFor="let key of frenchSpecialCharacters; let i = index" mat-raised-button (click)="enterCharacter(key)"> {{shift ? key.toUpperCase() : key}} </button> </div> - <div class="keyboard-container"> - <button *ngFor="let key of ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']" + <div class="character-rows"> + <button *ngFor="let key of numberKeys; let i = index" mat-raised-button [style.grid-row-start]="2" - [style.grid-column-start]="key" - (click)="enterCharacter(key)">{{key}}</button> + [style.grid-column-start]="i + 1" + (click)="enterAltCharacter(key)"> + <ng-container *ngIf="!shift"> + {{key[0]}} + <span class="alternativeKey">{{key[1]}}</span> + </ng-container> + <ng-container *ngIf="shift"> + {{key[1]}} + <span class="alternativeKey">{{key[0]}}</span> + </ng-container> + </button> <button mat-raised-button [style.grid-row-start]="2" - [style.grid-column-start]="11" + [style.grid-column-start]="12" [style.grid-column-end]="13" (click)="backspaceClicked.emit()"> <mat-icon>keyboard_backspace</mat-icon> @@ -47,12 +56,12 @@ <mat-icon>keyboard_return</mat-icon> </button> - <button mat-raised-button + <button mat-raised-button class="iconButton" [style.background-color]="shift ? 'lightgrey' : null" [style.grid-row-start]="5" [style.grid-row-end]="6" [style.grid-column-start]="1" - [style.grid-column-end]="3" + [style.grid-column-end]="2" (click)="toggleShift()"> <mat-icon *ngIf="!shift">keyboard_arrow_up</mat-icon> <mat-icon *ngIf="shift">keyboard_capslock</mat-icon> @@ -61,13 +70,27 @@ <button *ngFor="let key of ['y', 'x', 'c', 'v', 'b', 'n', 'm']; let i = index" mat-raised-button [style.grid-row-start]="5" - [style.grid-column-start]="i + 3" + [style.grid-column-start]="i + 2" (click)="enterCharacter(key)">{{shift ? key.toUpperCase() : key}}</button> + <button *ngFor="let key of [[',', ';'], ['.', ':'], ['-', '_']]; let i = index" + mat-raised-button + [style.grid-row-start]="5" + [style.grid-column-start]="i + 9" + (click)="enterAltCharacter($any(key))"> + <ng-container *ngIf="!shift"> + {{key[0]}} + <span class="alternativeKey">{{key[1]}}</span> + </ng-container> + <ng-container *ngIf="shift"> + {{key[1]}} + <span class="alternativeKey">{{key[0]}}</span> + </ng-container> + </button> <button mat-raised-button [style.grid-row-start]="6" - [style.grid-column-start]="1" - [style.grid-column-end]="13" + [style.grid-column-start]="2" + [style.grid-column-end]="12" (click)="spaceClicked.emit()"> <mat-icon>space_bar</mat-icon> </button> diff --git a/projects/player/modules/keyboard/components/keyboard.component.scss b/projects/player/modules/keyboard/components/keyboard.component.scss index bfbbbf1f6795ec7d3d66520143637f3cf0a6ced3..2fc95949cecb27ce7e26be3d92012ee6121dfce1 100644 --- a/projects/player/modules/keyboard/components/keyboard.component.scss +++ b/projects/player/modules/keyboard/components/keyboard.component.scss @@ -1,7 +1,5 @@ -.keyboard-container { +.character-rows { background-color: lightgray; - margin-left: 10%; - margin-right: 10%; padding: 0 50px; display: grid; } @@ -13,5 +11,21 @@ } button { - margin: 10px; + margin: 4px; + font-size: 2vw; + min-height: 50px; + min-width: unset; +} + +::ng-deep .keyboard-container .iconButton mat-icon { + font-size: 2vw; + width: unset; +} + +.alternativeKey { + color: grey; + position: absolute; + top: -5px; + font-size: 1.4vw; + padding-left: 10px; } diff --git a/projects/player/modules/keyboard/components/keyboard.component.ts b/projects/player/modules/keyboard/components/keyboard.component.ts index 8bf8e35dfe66d8997226db059b59e726ecb1f855..ca17772aad5469d488b91f35b684c837c5e68999 100644 --- a/projects/player/modules/keyboard/components/keyboard.component.ts +++ b/projects/player/modules/keyboard/components/keyboard.component.ts @@ -15,11 +15,19 @@ export class KeyboardComponent { @Output() backspaceClicked = new EventEmitter(); shift = false; + numberKeys: [string, string][] = [['1', '!'], ['2', '"'], ['3', '§'], ['4', '$'], ['5', '%'], ['6', '&'], + ['7', '/'], ['8', '('], ['9', ')'], ['0', '='], ['ß', '?']]; + + frenchSpecialCharacters = ['â', 'à ', 'æ', 'ê', 'è', 'é', 'ë', 'î', 'ï', 'ô', 'ò', 'œ', 'û', 'ù', 'ü', 'ç']; 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]); + } + toggleShift(): void { this.shift = !this.shift; }