From dbeaec3a0e5a50c84b70b28ae00a368a3e6e98e9 Mon Sep 17 00:00:00 2001 From: tobigun Date: Sat, 22 Mar 2008 11:58:28 +0000 Subject: Support for non-US (QWERTY) keyboard layout. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@970 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Screens/UScreenEdit.pas | 13 +- Game/Code/Screens/UScreenEditConvert.pas | 16 +- Game/Code/Screens/UScreenEditHeader.pas | 11 +- Game/Code/Screens/UScreenEditSub.pas | 355 ++++++++++++++------------- Game/Code/Screens/UScreenLevel.pas | 15 +- Game/Code/Screens/UScreenMain.pas | 34 ++- Game/Code/Screens/UScreenName.pas | 17 +- Game/Code/Screens/UScreenOpen.pas | 5 +- Game/Code/Screens/UScreenOptions.pas | 15 +- Game/Code/Screens/UScreenOptionsAdvanced.pas | 17 +- Game/Code/Screens/UScreenOptionsGame.pas | 17 +- Game/Code/Screens/UScreenOptionsGraphics.pas | 13 +- Game/Code/Screens/UScreenOptionsLyrics.pas | 13 +- Game/Code/Screens/UScreenOptionsRecord.pas | 10 +- Game/Code/Screens/UScreenOptionsSound.pas | 17 +- Game/Code/Screens/UScreenOptionsThemes.pas | 18 +- Game/Code/Screens/UScreenPartyNewRound.pas | 16 +- Game/Code/Screens/UScreenPartyOptions.pas | 16 +- Game/Code/Screens/UScreenPartyPlayer.pas | 11 +- Game/Code/Screens/UScreenPartyScore.pas | 12 +- Game/Code/Screens/UScreenPartyWin.pas | 16 +- Game/Code/Screens/UScreenPopup.pas | 12 +- Game/Code/Screens/UScreenScore.pas | 11 +- Game/Code/Screens/UScreenSing.pas | 51 ++-- Game/Code/Screens/UScreenSong.pas | 314 ++++++++++++----------- Game/Code/Screens/UScreenSongJumpto.pas | 9 +- Game/Code/Screens/UScreenSongMenu.pas | 34 +-- Game/Code/Screens/UScreenStatDetail.pas | 11 +- Game/Code/Screens/UScreenStatMain.pas | 15 +- Game/Code/Screens/UScreenTop5.pas | 16 +- 30 files changed, 644 insertions(+), 486 deletions(-) (limited to 'Game') diff --git a/Game/Code/Screens/UScreenEdit.pas b/Game/Code/Screens/UScreenEdit.pas index 407a37d0..4d105e5f 100644 --- a/Game/Code/Screens/UScreenEdit.pas +++ b/Game/Code/Screens/UScreenEdit.pas @@ -22,19 +22,24 @@ type implementation -uses UGraphic, UMusic, USkins; +uses UGraphic, UMusic, USkins, SysUtils; function TScreenEdit.ParseInput(PressedKey: Cardinal; CharCode: WideChar; PressedDown: Boolean): Boolean; begin Result := true; If (PressedDown) Then begin // Key Down - case PressedKey of - SDLK_Q: + // check normal keys + case WideUpperCase(CharCode)[1] of + 'Q': begin Result := false; + Exit; end; - + end; + + // check special keys + case PressedKey of SDLK_ESCAPE, SDLK_BACKSPACE : begin diff --git a/Game/Code/Screens/UScreenEditConvert.pas b/Game/Code/Screens/UScreenEditConvert.pas index fe9eab02..d50d546d 100644 --- a/Game/Code/Screens/UScreenEditConvert.pas +++ b/Game/Code/Screens/UScreenEditConvert.pas @@ -108,13 +108,17 @@ begin Result := true; If (PressedDown) Then begin // Key Down + // check normal keys + case WideUpperCase(CharCode)[1] of + 'Q': + begin + Result := false; + Exit; + end; + end; + + // check special keys case PressedKey of - SDLK_Q: - begin - Result := false; - end; - - SDLK_ESCAPE, SDLK_BACKSPACE : begin diff --git a/Game/Code/Screens/UScreenEditHeader.pas b/Game/Code/Screens/UScreenEditHeader.pas index bb464039..3b29564a 100644 --- a/Game/Code/Screens/UScreenEditHeader.pas +++ b/Game/Code/Screens/UScreenEditHeader.pas @@ -58,12 +58,17 @@ var begin Result := true; If (PressedDown) Then begin // Key Down - case PressedKey of - SDLK_Q: + // check normal keys + case WideUpperCase(CharCode)[1] of + 'Q': begin Result := false; + Exit; end; - + end; + + // check special keys + case PressedKey of SDLK_ESCAPE : begin // Music.PlayBack; diff --git a/Game/Code/Screens/UScreenEditSub.pas b/Game/Code/Screens/UScreenEditSub.pas index 99d9428f..c75661fc 100644 --- a/Game/Code/Screens/UScreenEditSub.pas +++ b/Game/Code/Screens/UScreenEditSub.pas @@ -118,17 +118,156 @@ begin + KMOD_LCTRL + KMOD_RCTRL + KMOD_LALT + KMOD_RALT {+ KMOD_CAPS}); If (PressedDown) then begin // Key Down - case PressedKey of + // check normal keys + case WideUpperCase(CharCode)[1] of + 'Q': + begin + Result := false; + Exit; + end; + 'S': + begin + // Save Song + if SDL_ModState = KMOD_LSHIFT then + SaveSong(CurrentSong, Lines[0], CurrentSong.Path + CurrentSong.FileName, true) + else + SaveSong(CurrentSong, Lines[0], CurrentSong.Path + CurrentSong.FileName, false); - SDLK_ESCAPE, - SDLK_BACKSPACE : + {if SDL_ModState = KMOD_LSHIFT or KMOD_LCTRL + KMOD_LALT then + // Save Song + SaveSongDebug(CurrentSong, Lines[0], 'C:\song.asm', false);} + + Exit; + end; + 'D': begin - FadeTo(@ScreenSong); + // Divide lengths by 2 + CzesciDivide; + Exit; end; + 'M': + begin + // Multiply lengths by 2 + CzesciMultiply; + Exit; + end; + 'C': + begin + // Capitalize letter at the beginning of line + if SDL_ModState = 0 then + LyricsCapitalize; + + // Correct spaces + if SDL_ModState = KMOD_LSHIFT then + LyricsCorrectSpaces; + + // Copy sentence + if SDL_ModState = KMOD_LCTRL then + MarkSrc; + + Exit; + end; + 'V': + begin + // Paste text + if SDL_ModState = KMOD_LCTRL then begin + if Lines[0].Line[Lines[0].Current].IlNut >= Lines[0].Line[CopySrc].IlNut then + PasteText + else + beep; + end; - SDLK_Q: + if SDL_ModState = KMOD_LCTRL + KMOD_LSHIFT then begin + CopySentence(CopySrc, Lines[0].Current); + end; + end; + 'T': begin - Result := false; + // Fixes timings between sentences + FixTimings; + Exit; + end; + 'P': + begin + if SDL_ModState = 0 then + begin + // Play Sentence + Click := true; + AudioPlayback.Stop; + R := GetTimeFromBeat(Lines[0].Line[Lines[0].Current].StartNote); + if R <= AudioPlayback.Length then + begin + AudioPlayback.Position := R; + PlayStopTime := GetTimeFromBeat(Lines[0].Line[Lines[0].Current].End_); + PlaySentence := true; + AudioPlayback.Play; + LastClick := -100; + end; + end + else if SDL_ModState = KMOD_LSHIFT then + begin + PlaySentenceMidi := true; + + MidiTime := USTime.GetTime; + MidiStart := GetTimeFromBeat(Lines[0].Line[Lines[0].Current].StartNote); + MidiStop := GetTimeFromBeat(Lines[0].Line[Lines[0].Current].End_); + + LastClick := -100; + end + else if SDL_ModState = KMOD_LSHIFT or KMOD_LCTRL then + begin + PlaySentenceMidi := true; + MidiTime := USTime.GetTime; + MidiStart := GetTimeFromBeat(Lines[0].Line[Lines[0].Current].StartNote); + MidiStop := GetTimeFromBeat(Lines[0].Line[Lines[0].Current].End_); + LastClick := -100; + + PlaySentence := true; + Click := true; + AudioPlayback.Stop; + AudioPlayback.Position := GetTimeFromBeat(Lines[0].Line[Lines[0].Current].StartNote)+0{-0.10}; + PlayStopTime := GetTimeFromBeat(Lines[0].Line[Lines[0].Current].End_)+0; + AudioPlayback.Play; + LastClick := -100; + end; + Exit; + end; + // Golden Note Patch + 'G': + begin + case Lines[0].Line[Lines[0].Current].Note[CurrentNote].NoteType of + 0: Lines[0].Line[Lines[0].Current].Note[CurrentNote].NoteType := 2; + 1: Lines[0].Line[Lines[0].Current].Note[CurrentNote].NoteType := 2; + 2: Lines[0].Line[Lines[0].Current].Note[CurrentNote].NoteType := 1; + end; // case + Lines[0].Line[Lines[0].Current].Note[CurrentNote].Freestyle := False; + Exit; + end; + // Freestyle Note Patch + 'F': + begin + case Lines[0].Line[Lines[0].Current].Note[CurrentNote].NoteType of + 0: + begin; + Lines[0].Line[Lines[0].Current].Note[CurrentNote].NoteType := 1; + Lines[0].Line[Lines[0].Current].Note[CurrentNote].Freestyle := False; + end; + 1,2: + begin; + Lines[0].Line[Lines[0].Current].Note[CurrentNote].NoteType := 0; + Lines[0].Line[Lines[0].Current].Note[CurrentNote].Freestyle := True; + end; + end; // case + Exit; + end; + end; + + // check special keys + case PressedKey of + SDLK_ESCAPE, + SDLK_BACKSPACE : + begin + FadeTo(@ScreenSong); end; SDLK_BACKQUOTE: @@ -161,13 +300,32 @@ begin CurrentSong.BPM[0].BPM := Round((CurrentSong.BPM[0].BPM * 25) - 1) / 25; end; - SDLK_0: + SDLK_4: begin - // Increase GAP - if SDL_ModState = 0 then - CurrentSong.GAP := CurrentSong.GAP + 10; - if SDL_ModState = KMOD_LSHIFT then - CurrentSong.GAP := CurrentSong.GAP + 1000; + if SDL_ModState = KMOD_LCTRL + KMOD_LSHIFT then begin + CopySentence(CopySrc, Lines[0].Current); + CopySentence(CopySrc+1, Lines[0].Current+1); + CopySentence(CopySrc+2, Lines[0].Current+2); + CopySentence(CopySrc+3, Lines[0].Current+3); + end; + + if SDL_ModState = KMOD_LCTRL + KMOD_LSHIFT + KMOD_LALT then begin + CopySentences(CopySrc, Lines[0].Current, 4); + end; + end; + SDLK_5: + begin + if SDL_ModState = KMOD_LCTRL + KMOD_LSHIFT then begin + CopySentence(CopySrc, Lines[0].Current); + CopySentence(CopySrc+1, Lines[0].Current+1); + CopySentence(CopySrc+2, Lines[0].Current+2); + CopySentence(CopySrc+3, Lines[0].Current+3); + CopySentence(CopySrc+4, Lines[0].Current+4); + end; + + if SDL_ModState = KMOD_LCTRL + KMOD_LSHIFT + KMOD_LALT then begin + CopySentences(CopySrc, Lines[0].Current, 5); + end; end; SDLK_9: @@ -178,6 +336,14 @@ begin if SDL_ModState = KMOD_LSHIFT then CurrentSong.GAP := CurrentSong.GAP - 1000; end; + SDLK_0: + begin + // Increase GAP + if SDL_ModState = 0 then + CurrentSong.GAP := CurrentSong.GAP + 10; + if SDL_ModState = KMOD_LSHIFT then + CurrentSong.GAP := CurrentSong.GAP + 1000; + end; SDLK_KP_PLUS: begin @@ -218,145 +384,12 @@ begin end; - SDLK_S: - begin - // Save Song - if SDL_ModState = KMOD_LSHIFT then - SaveSong(CurrentSong, Lines[0], CurrentSong.Path + CurrentSong.FileName, true) - else - SaveSong(CurrentSong, Lines[0], CurrentSong.Path + CurrentSong.FileName, false); - - {if SDL_ModState = KMOD_LSHIFT or KMOD_LCTRL + KMOD_LALT then - // Save Song - SaveSongDebug(CurrentSong, Lines[0], 'C:\song.asm', false);} - - end; - - SDLK_D: - begin - // Divide lengths by 2 - CzesciDivide; - end; - - SDLK_M: - begin - // Multiply lengths by 2 - CzesciMultiply; - end; - - SDLK_C: - begin - // Capitalize letter at the beginning of line - if SDL_ModState = 0 then - LyricsCapitalize; - - // Correct spaces - if SDL_ModState = KMOD_LSHIFT then - LyricsCorrectSpaces; - - // Copy sentence - if SDL_ModState = KMOD_LCTRL then - MarkSrc; - end; - - SDLK_V: - begin - // Paste text - if SDL_ModState = KMOD_LCTRL then begin - if Lines[0].Line[Lines[0].Current].IlNut >= Lines[0].Line[CopySrc].IlNut then - PasteText - else - beep; - end; - - if SDL_ModState = KMOD_LCTRL + KMOD_LSHIFT then begin - CopySentence(CopySrc, Lines[0].Current); - end; - end; - - SDLK_4: - begin - if SDL_ModState = KMOD_LCTRL + KMOD_LSHIFT then begin - CopySentence(CopySrc, Lines[0].Current); - CopySentence(CopySrc+1, Lines[0].Current+1); - CopySentence(CopySrc+2, Lines[0].Current+2); - CopySentence(CopySrc+3, Lines[0].Current+3); - end; - - if SDL_ModState = KMOD_LCTRL + KMOD_LSHIFT + KMOD_LALT then begin - CopySentences(CopySrc, Lines[0].Current, 4); - end; - end; - SDLK_5: - begin - if SDL_ModState = KMOD_LCTRL + KMOD_LSHIFT then begin - CopySentence(CopySrc, Lines[0].Current); - CopySentence(CopySrc+1, Lines[0].Current+1); - CopySentence(CopySrc+2, Lines[0].Current+2); - CopySentence(CopySrc+3, Lines[0].Current+3); - CopySentence(CopySrc+4, Lines[0].Current+4); - end; - - if SDL_ModState = KMOD_LCTRL + KMOD_LSHIFT + KMOD_LALT then begin - CopySentences(CopySrc, Lines[0].Current, 5); - end; - end; - - SDLK_T: - begin - // Fixes timings between sentences - FixTimings; - end; - SDLK_F4: begin // Enter Text Edit Mode TextEditMode := true; end; - SDLK_P: - begin - if SDL_ModState = 0 then begin - // Play Sentence - Click := true; - AudioPlayback.Stop; - R := GetTimeFromBeat(Lines[0].Line[Lines[0].Current].StartNote); - if R <= AudioPlayback.Length then - begin - AudioPlayback.Position := R; - PlayStopTime := GetTimeFromBeat(Lines[0].Line[Lines[0].Current].End_); - PlaySentence := true; - AudioPlayback.Play; - LastClick := -100; - end; - end; - - if SDL_ModState = KMOD_LSHIFT then begin - PlaySentenceMidi := true; - - MidiTime := USTime.GetTime; - MidiStart := GetTimeFromBeat(Lines[0].Line[Lines[0].Current].StartNote); - MidiStop := GetTimeFromBeat(Lines[0].Line[Lines[0].Current].End_); - - LastClick := -100; - end; - if SDL_ModState = KMOD_LSHIFT or KMOD_LCTRL then begin - PlaySentenceMidi := true; - MidiTime := USTime.GetTime; - MidiStart := GetTimeFromBeat(Lines[0].Line[Lines[0].Current].StartNote); - MidiStop := GetTimeFromBeat(Lines[0].Line[Lines[0].Current].End_); - LastClick := -100; - - PlaySentence := true; - Click := true; - AudioPlayback.Stop; - AudioPlayback.Position := GetTimeFromBeat(Lines[0].Line[Lines[0].Current].StartNote)+0{-0.10}; - PlayStopTime := GetTimeFromBeat(Lines[0].Line[Lines[0].Current].End_)+0; - AudioPlayback.Play; - LastClick := -100; - end; - end; - SDLK_SPACE: begin // Play Sentence @@ -549,37 +582,7 @@ begin {$endif} end; - // Golden Note Patch - SDLK_G: - begin - case Lines[0].Line[Lines[0].Current].Note[CurrentNote].NoteType of - 0: Lines[0].Line[Lines[0].Current].Note[CurrentNote].NoteType := 2; - 1: Lines[0].Line[Lines[0].Current].Note[CurrentNote].NoteType := 2; - 2: Lines[0].Line[Lines[0].Current].Note[CurrentNote].NoteType := 1; - end; // case - Lines[0].Line[Lines[0].Current].Note[CurrentNote].Freestyle := False; - end; - - // Freestyle Note Patch - SDLK_F: - begin - case Lines[0].Line[Lines[0].Current].Note[CurrentNote].NoteType of - 0: - begin; - Lines[0].Line[Lines[0].Current].Note[CurrentNote].NoteType := 1; - Lines[0].Line[Lines[0].Current].Note[CurrentNote].Freestyle := False; - end; - 1,2: - begin; - Lines[0].Line[Lines[0].Current].Note[CurrentNote].NoteType := 0; - Lines[0].Line[Lines[0].Current].Note[CurrentNote].Freestyle := True; - end; - end; // case - - end; - - - end; + end; // case end; end; // if end; diff --git a/Game/Code/Screens/UScreenLevel.pas b/Game/Code/Screens/UScreenLevel.pas index 02939385..144ec697 100644 --- a/Game/Code/Screens/UScreenLevel.pas +++ b/Game/Code/Screens/UScreenLevel.pas @@ -29,12 +29,17 @@ begin Result := true; If (PressedDown) Then begin // Key Down + // check normal keys + case WideUpperCase(CharCode)[1] of + 'Q': + begin + Result := false; + Exit; + end; + end; + + // check special keys case PressedKey of - SDLK_Q: - begin - Result := false; - end; - SDLK_ESCAPE, SDLK_BACKSPACE : begin diff --git a/Game/Code/Screens/UScreenMain.pas b/Game/Code/Screens/UScreenMain.pas index 44906858..2d13ac09 100644 --- a/Game/Code/Screens/UScreenMain.pas +++ b/Game/Code/Screens/UScreenMain.pas @@ -73,19 +73,14 @@ begin If (PressedDown) Then begin // Key Down - case PressedKey of - SDLK_Q: + // check normal keys + case WideUpperCase(CharCode)[1] of + 'Q': begin Result := false; + Exit; end; - - SDLK_ESCAPE, - SDLK_BACKSPACE : - begin - Result := False; - end; - - SDLK_C: + 'C': begin if (SDL_ModState = KMOD_LALT) then begin @@ -93,24 +88,37 @@ begin //Credits_Alpha := 0; //Credits_Visible := True; FadeTo(@ScreenCredits , SoundLib.Start ); + Exit; end; end; - SDLK_M: + 'M': begin if (Ini.Players >= 1) AND (Length(DLLMan.Plugins)>=1) then begin FadeTo(@ScreenPartyOptions, SoundLib.Start); + Exit; end; end; - SDLK_S: + 'S': begin FadeTo(@ScreenStatMain, SoundLib.Start); + Exit; end; - SDLK_E: + 'E': begin FadeTo(@ScreenEdit, SoundLib.Start); + Exit; + end; + end; + + // check special keys + case PressedKey of + SDLK_ESCAPE, + SDLK_BACKSPACE : + begin + Result := False; end; SDLK_RETURN: diff --git a/Game/Code/Screens/UScreenName.pas b/Game/Code/Screens/UScreenName.pas index adbc2c25..6d3e81b4 100644 --- a/Game/Code/Screens/UScreenName.pas +++ b/Game/Code/Screens/UScreenName.pas @@ -19,7 +19,8 @@ type implementation -uses UGraphic, UMain, UIni, UTexture; +uses UGraphic, UMain, UIni, UTexture, UCommon; + function TScreenName.ParseInput(PressedKey: Cardinal; CharCode: WideChar; PressedDown: Boolean): Boolean; var @@ -33,12 +34,16 @@ begin SDL_ModState := SDL_GetModState and (KMOD_LSHIFT + KMOD_RSHIFT + KMOD_LCTRL + KMOD_RCTRL + KMOD_LALT + KMOD_RALT); - case PressedKey of - SDLK_0..SDLK_9, SDLK_A..SDLK_Z, SDLK_SPACE, SDLK_MINUS, SDLK_EXCLAIM, SDLK_COMMA, SDLK_SLASH, SDLK_ASTERISK, SDLK_QUESTION, SDLK_QUOTE, SDLK_QUOTEDBL: - begin - Button[Interaction].Text[0].Text := Button[Interaction].Text[0].Text + CharCode; - end; + // check normal keys + if (IsAlphaNumericChar(CharCode) or + (CharCode in [' ','-','_','!',',','<','/','*','?','''','"'])) then + begin + Button[Interaction].Text[0].Text := Button[Interaction].Text[0].Text + CharCode; + Exit; + end; + // check special keys + case PressedKey of // Templates for Names Mod SDLK_F1: if (SDL_ModState = KMOD_LALT) then diff --git a/Game/Code/Screens/UScreenOpen.pas b/Game/Code/Screens/UScreenOpen.pas index b069f3c8..3a15f26f 100644 --- a/Game/Code/Screens/UScreenOpen.pas +++ b/Game/Code/Screens/UScreenOpen.pas @@ -31,9 +31,11 @@ uses UGraphic, UDraw, UMain, USkins; function TScreenOpen.ParseInput(PressedKey: Cardinal; CharCode: WideChar; PressedDown: Boolean): Boolean; begin Result := true; + if (PressedDown) then begin // Key Down + // check normal keys case CharCode of - 'a'..'z', 'A'..'Z', '0'..'9', #32, '-', '.', ':', '\': + '0'..'9', 'a'..'z', 'A'..'Z', ' ', '-', '.', ':', '\': begin if Interaction = 0 then begin Text[TextN].Text := Text[TextN].Text + CharCode; @@ -41,6 +43,7 @@ begin end; end; + // check special keys case PressedKey of SDLK_Q: begin diff --git a/Game/Code/Screens/UScreenOptions.pas b/Game/Code/Screens/UScreenOptions.pas index 9c4567d1..cfb0c977 100644 --- a/Game/Code/Screens/UScreenOptions.pas +++ b/Game/Code/Screens/UScreenOptions.pas @@ -28,12 +28,17 @@ begin Result := true; If (PressedDown) Then begin // Key Down + // check normal keys + case WideUpperCase(CharCode)[1] of + 'Q': + begin + Result := false; + Exit; + end; + end; + + // check special keys case PressedKey of - SDLK_Q: - begin - Result := false; - end; - SDLK_ESCAPE, SDLK_BACKSPACE : begin diff --git a/Game/Code/Screens/UScreenOptionsAdvanced.pas b/Game/Code/Screens/UScreenOptionsAdvanced.pas index a09a5354..c23f133c 100644 --- a/Game/Code/Screens/UScreenOptionsAdvanced.pas +++ b/Game/Code/Screens/UScreenOptionsAdvanced.pas @@ -17,19 +17,24 @@ type implementation -uses UGraphic; +uses UGraphic, SysUtils; function TScreenOptionsAdvanced.ParseInput(PressedKey: Cardinal; CharCode: WideChar; PressedDown: Boolean): Boolean; begin Result := true; If (PressedDown) Then begin // Key Down + // check normal keys + case WideUpperCase(CharCode)[1] of + 'Q': + begin + Result := false; + Exit; + end; + end; + + // check special keys case PressedKey of - SDLK_Q: - begin - Result := false; - end; - SDLK_ESCAPE, SDLK_BACKSPACE : begin diff --git a/Game/Code/Screens/UScreenOptionsGame.pas b/Game/Code/Screens/UScreenOptionsGame.pas index 063e36ed..40200c60 100644 --- a/Game/Code/Screens/UScreenOptionsGame.pas +++ b/Game/Code/Screens/UScreenOptionsGame.pas @@ -19,19 +19,24 @@ type implementation -uses UGraphic; +uses UGraphic, SysUtils; function TScreenOptionsGame.ParseInput(PressedKey: Cardinal; CharCode: WideChar; PressedDown: Boolean): Boolean; begin Result := true; If (PressedDown) Then begin // Key Down + // check normal keys + case WideUpperCase(CharCode)[1] of + 'Q': + begin + Result := false; + Exit; + end; + end; + + // check special keys case PressedKey of - SDLK_Q: - begin - Result := false; - end; - SDLK_ESCAPE, SDLK_BACKSPACE : begin diff --git a/Game/Code/Screens/UScreenOptionsGraphics.pas b/Game/Code/Screens/UScreenOptionsGraphics.pas index 0825764d..04656e97 100644 --- a/Game/Code/Screens/UScreenOptionsGraphics.pas +++ b/Game/Code/Screens/UScreenOptionsGraphics.pas @@ -17,19 +17,24 @@ type implementation -uses UGraphic, UMain; +uses UGraphic, UMain, SysUtils; function TScreenOptionsGraphics.ParseInput(PressedKey: Cardinal; CharCode: WideChar; PressedDown: Boolean): Boolean; begin Result := true; If (PressedDown) Then begin // Key Down - case PressedKey of - SDLK_Q: + // check normal keys + case WideUpperCase(CharCode)[1] of + 'Q': begin Result := false; + Exit; end; - + end; + + // check special keys + case PressedKey of SDLK_ESCAPE, SDLK_BACKSPACE : begin diff --git a/Game/Code/Screens/UScreenOptionsLyrics.pas b/Game/Code/Screens/UScreenOptionsLyrics.pas index 5130c6b0..50b7d53d 100644 --- a/Game/Code/Screens/UScreenOptionsLyrics.pas +++ b/Game/Code/Screens/UScreenOptionsLyrics.pas @@ -17,19 +17,24 @@ type implementation -uses UGraphic; +uses UGraphic, SysUtils; function TScreenOptionsLyrics.ParseInput(PressedKey: Cardinal; CharCode: WideChar; PressedDown: Boolean): Boolean; begin Result := true; If (PressedDown) Then begin // Key Down - case PressedKey of - SDLK_Q: + // check normal keys + case WideUpperCase(CharCode)[1] of + 'Q': begin Result := false; + Exit; end; - + end; + + // check special keys + case PressedKey of SDLK_ESCAPE, SDLK_BACKSPACE : begin diff --git a/Game/Code/Screens/UScreenOptionsRecord.pas b/Game/Code/Screens/UScreenOptionsRecord.pas index 8a1192db..0ba554c4 100644 --- a/Game/Code/Screens/UScreenOptionsRecord.pas +++ b/Game/Code/Screens/UScreenOptionsRecord.pas @@ -77,11 +77,17 @@ begin Result := true; If (PressedDown) Then begin // Key Down - case PressedKey of - SDLK_Q: + // check normal keys + case WideUpperCase(CharCode)[1] of + 'Q': begin Result := false; + Exit; end; + end; + + // check special keys + case PressedKey of SDLK_ESCAPE, SDLK_BACKSPACE: begin diff --git a/Game/Code/Screens/UScreenOptionsSound.pas b/Game/Code/Screens/UScreenOptionsSound.pas index 78a24f4a..70d92fa5 100644 --- a/Game/Code/Screens/UScreenOptionsSound.pas +++ b/Game/Code/Screens/UScreenOptionsSound.pas @@ -17,19 +17,24 @@ type implementation -uses UGraphic; +uses UGraphic, SysUtils; function TScreenOptionsSound.ParseInput(PressedKey: Cardinal; CharCode: WideChar; PressedDown: Boolean): Boolean; begin Result := true; If (PressedDown) Then begin // Key Down + // check normal keys + case WideUpperCase(CharCode)[1] of + 'Q': + begin + Result := false; + Exit; + end; + end; + + // check special keys case PressedKey of - SDLK_Q: - begin - Result := false; - end; - SDLK_ESCAPE, SDLK_BACKSPACE : begin diff --git a/Game/Code/Screens/UScreenOptionsThemes.pas b/Game/Code/Screens/UScreenOptionsThemes.pas index 7024e8c1..c50256a2 100644 --- a/Game/Code/Screens/UScreenOptionsThemes.pas +++ b/Game/Code/Screens/UScreenOptionsThemes.pas @@ -30,19 +30,25 @@ implementation uses UMain, UGraphic, - USkins; + USkins, + SysUtils; function TScreenOptionsThemes.ParseInput(PressedKey: Cardinal; CharCode: WideChar; PressedDown: Boolean): Boolean; begin Result := true; If (PressedDown) Then begin // Key Down + // check normal keys + case WideUpperCase(CharCode)[1] of + 'Q': + begin + Result := false; + Exit; + end; + end; + + // check special keys case PressedKey of - SDLK_Q: - begin - Result := false; - end; - SDLK_ESCAPE, SDLK_BACKSPACE : begin diff --git a/Game/Code/Screens/UScreenPartyNewRound.pas b/Game/Code/Screens/UScreenPartyNewRound.pas index e849f776..e7e2c682 100644 --- a/Game/Code/Screens/UScreenPartyNewRound.pas +++ b/Game/Code/Screens/UScreenPartyNewRound.pas @@ -91,13 +91,17 @@ begin Result := true; If (PressedDown) Then begin // Key Down + // check normal keys + case WideUpperCase(CharCode)[1] of + 'Q': + begin + Result := false; + Exit; + end; + end; + + // check special keys case PressedKey of - SDLK_Q: - begin - Result := false; - end; - - SDLK_ESCAPE, SDLK_BACKSPACE : begin diff --git a/Game/Code/Screens/UScreenPartyOptions.pas b/Game/Code/Screens/UScreenPartyOptions.pas index f72ed137..c0dde4cc 100644 --- a/Game/Code/Screens/UScreenPartyOptions.pas +++ b/Game/Code/Screens/UScreenPartyOptions.pas @@ -56,13 +56,17 @@ begin Result := true; If (PressedDown) Then begin // Key Down + // check normal keys + case WideUpperCase(CharCode)[1] of + 'Q': + begin + Result := false; + Exit; + end; + end; + + // check special keys case PressedKey of - SDLK_Q: - begin - Result := false; - end; - - SDLK_ESCAPE, SDLK_BACKSPACE : begin diff --git a/Game/Code/Screens/UScreenPartyPlayer.pas b/Game/Code/Screens/UScreenPartyPlayer.pas index af603497..c8600c9b 100644 --- a/Game/Code/Screens/UScreenPartyPlayer.pas +++ b/Game/Code/Screens/UScreenPartyPlayer.pas @@ -64,12 +64,17 @@ begin SDL_ModState := 0; begin // Key Down - case PressedKey of - SDLK_0..SDLK_9, SDLK_A..SDLK_Z, SDLK_SPACE, SDLK_MINUS, SDLK_EXCLAIM, SDLK_COMMA, SDLK_SLASH, SDLK_ASTERISK, SDLK_QUESTION, SDLK_QUOTE, SDLK_QUOTEDBL: + // check normal keys + case CharCode of + '0'..'9', 'a'..'z', 'A'..'Z', ' ', '-', '_', '!', ',', '<', '/', '*', '?', '''', '"': begin Button[Interaction].Text[0].Text := Button[Interaction].Text[0].Text + CharCode; + Exit; end; - + end; + + // check special keys + case PressedKey of // Templates for Names Mod SDLK_F1: if (SDL_ModState = KMOD_LALT) then diff --git a/Game/Code/Screens/UScreenPartyScore.pas b/Game/Code/Screens/UScreenPartyScore.pas index d9f1db1c..26e53fcf 100644 --- a/Game/Code/Screens/UScreenPartyScore.pas +++ b/Game/Code/Screens/UScreenPartyScore.pas @@ -49,13 +49,17 @@ begin Result := true; If (PressedDown) Then begin // Key Down - case PressedKey of - SDLK_Q: + // check normal keys + case WideUpperCase(CharCode)[1] of + 'Q': begin Result := false; + Exit; end; - - + end; + + // check special keys + case PressedKey of SDLK_ESCAPE, SDLK_BACKSPACE : begin diff --git a/Game/Code/Screens/UScreenPartyWin.pas b/Game/Code/Screens/UScreenPartyWin.pas index e91d20f0..02079b34 100644 --- a/Game/Code/Screens/UScreenPartyWin.pas +++ b/Game/Code/Screens/UScreenPartyWin.pas @@ -42,13 +42,17 @@ begin Result := true; If (PressedDown) Then begin // Key Down + // check normal keys + case WideUpperCase(CharCode)[1] of + 'Q': + begin + Result := false; + Exit; + end; + end; + + // check special keys case PressedKey of - SDLK_Q: - begin - Result := false; - end; - - SDLK_ESCAPE, SDLK_BACKSPACE : begin diff --git a/Game/Code/Screens/UScreenPopup.pas b/Game/Code/Screens/UScreenPopup.pas index cb524a72..c4541050 100644 --- a/Game/Code/Screens/UScreenPopup.pas +++ b/Game/Code/Screens/UScreenPopup.pas @@ -48,13 +48,17 @@ begin Result := true; If (PressedDown) Then begin // Key Down - - case PressedKey of - SDLK_Q: + // check normal keys + case WideUpperCase(CharCode)[1] of + 'Q': begin Result := false; + Exit; end; - + end; + + // check special keys + case PressedKey of SDLK_ESCAPE, SDLK_BACKSPACE : begin diff --git a/Game/Code/Screens/UScreenScore.pas b/Game/Code/Screens/UScreenScore.pas index cee794fc..358c18d8 100644 --- a/Game/Code/Screens/UScreenScore.pas +++ b/Game/Code/Screens/UScreenScore.pas @@ -149,12 +149,17 @@ function TScreenScore.ParseInput(PressedKey: Cardinal; CharCode: WideChar; Press begin Result := true; If (PressedDown) Then begin - case PressedKey of - SDLK_Q: + // check normal keys + case WideUpperCase(CharCode)[1] of + 'Q': begin Result := false; + Exit; end; - + end; + + // check special keys + case PressedKey of SDLK_ESCAPE, SDLK_BACKSPACE : diff --git a/Game/Code/Screens/UScreenSing.pas b/Game/Code/Screens/UScreenSing.pas index 9c64c01b..6d05c145 100644 --- a/Game/Code/Screens/UScreenSing.pas +++ b/Game/Code/Screens/UScreenSing.pas @@ -134,19 +134,43 @@ begin Result := true; If (PressedDown) Then begin // Key Down - case PressedKey of - SDLK_Q: - begin + // check normal keys + case WideUpperCase(CharCode)[1] of + 'Q': + begin //When not ask before Exit then Finish now if (Ini.AskbeforeDel <> 1) then Finish - //else just Pause and let the Popup make the Work + //else just Pause and let the Popup make the Work else if not paused then Pause; - + Result := false; + Exit; + end; + 'V': //Show Visualization + begin + fShowVisualization := not fShowVisualization; + + if fShowVisualization then + fCurrentVideoPlaybackEngine := Visualization + else + fCurrentVideoPlaybackEngine := VideoPlayback; + + if fShowVisualization then + fCurrentVideoPlaybackEngine.play; + + Exit; + end; + 'P': + begin + Pause; + Exit; end; + end; + // check special keys + case PressedKey of SDLK_ESCAPE, SDLK_BACKSPACE : begin @@ -158,26 +182,11 @@ begin FadeTo(@ScreenScore); end; - SDLK_P, - SDLK_SPACE://Pause Mod + SDLK_SPACE: begin Pause; end; - SDLK_V: //Show Visualization - begin - fShowVisualization := not fShowVisualization; - - if fShowVisualization then - fCurrentVideoPlaybackEngine := Visualization - else - fCurrentVideoPlaybackEngine := VideoPlayback; - - if fShowVisualization then - fCurrentVideoPlaybackEngine.play; - - end; - SDLK_TAB: //Change Visualization Preset begin if fShowVisualization then diff --git a/Game/Code/Screens/UScreenSong.pas b/Game/Code/Screens/UScreenSong.pas index f1fef22b..a1cd8748 100644 --- a/Game/Code/Screens/UScreenSong.pas +++ b/Game/Code/Screens/UScreenSong.pas @@ -254,63 +254,192 @@ begin + KMOD_LCTRL + KMOD_RCTRL + KMOD_LALT + KMOD_RALT); //Jump to Artist/Titel - if (SDL_ModState and KMOD_LALT <> 0) AND (Mode = smNormal) AND (PressedKey >= SDLK_A) AND (PressedKey <= SDLK_Z) then + if ((SDL_ModState and KMOD_LALT <> 0) AND (Mode = smNormal)) then begin - Letter := WideUpperCase(CharCode)[1]; - I2 := Length(CatSongs.Song); - - //Jump To Titel - if (SDL_ModState = KMOD_LALT or KMOD_LSHIFT) then + if (WideUpperCase(CharCode)[1] in ['A'..'Z']) then begin - For I := 1 to high(CatSongs.Song) do + Letter := WideUpperCase(CharCode)[1]; + I2 := Length(CatSongs.Song); + + //Jump To Titel + if (SDL_ModState = (KMOD_LALT or KMOD_LSHIFT)) then begin - if (CatSongs.Song[(I + Interaction) mod I2].Visible) AND - (Length(CatSongs.Song[(I + Interaction) mod I2].Title)>0) AND - (WideUpperCase(CatSongs.Song[(I + Interaction) mod I2].Title)[1] = Letter) then + For I := 1 to high(CatSongs.Song) do begin - SkipTo(CatSongs.VisibleIndex((I + Interaction) mod I2)); + if (CatSongs.Song[(I + Interaction) mod I2].Visible) AND + (Length(CatSongs.Song[(I + Interaction) mod I2].Title)>0) AND + (WideUpperCase(CatSongs.Song[(I + Interaction) mod I2].Title)[1] = Letter) then + begin + SkipTo(CatSongs.VisibleIndex((I + Interaction) mod I2)); - AudioPlayback.PlaySound(SoundLib.Change); + AudioPlayback.PlaySound(SoundLib.Change); - ChangeMusic; - SetScroll4; - //UpdateLCD; //TODO: maybe LCD Support as Plugin? - //Break and Exit - Exit; + ChangeMusic; + SetScroll4; + //UpdateLCD; //TODO: maybe LCD Support as Plugin? + //Break and Exit + Exit; + end; end; - end; - end - //Jump to Artist - else if (SDL_ModState = KMOD_LALT) then - begin - For I := 1 to high(CatSongs.Song) do + end + //Jump to Artist + else if (SDL_ModState = KMOD_LALT) then begin - if (CatSongs.Song[(I + Interaction) mod I2].Visible) AND - (Length(CatSongs.Song[(I + Interaction) mod I2].Artist)>0) AND - (WideUpperCase(CatSongs.Song[(I + Interaction) mod I2].Artist)[1] = Letter) then + For I := 1 to high(CatSongs.Song) do begin - SkipTo(CatSongs.VisibleIndex((I + Interaction) mod I2)); + if (CatSongs.Song[(I + Interaction) mod I2].Visible) AND + (Length(CatSongs.Song[(I + Interaction) mod I2].Artist)>0) AND + (WideUpperCase(CatSongs.Song[(I + Interaction) mod I2].Artist)[1] = Letter) then + begin + SkipTo(CatSongs.VisibleIndex((I + Interaction) mod I2)); - AudioPlayback.PlaySound(SoundLib.Change); + AudioPlayback.PlaySound(SoundLib.Change); - ChangeMusic; - SetScroll4; - //UpdateLCD; //TODO: maybe LCD Support as Plugin? + ChangeMusic; + SetScroll4; + //UpdateLCD; //TODO: maybe LCD Support as Plugin? - //Break and Exit - Exit; + //Break and Exit + Exit; + end; end; end; end; + Exit; end; - case PressedKey of - SDLK_Q: + // check normal keys + case WideUpperCase(CharCode)[1] of + 'Q': begin Result := false; + Exit; end; + 'M': //Show SongMenu + begin + if (Songs.SongList.Count > 0) then begin + if (Mode = smNormal) then begin + if not CatSongs.Song[Interaction].Main then begin // clicked on Song + if CatSongs.CatNumShow = -3 then + ScreenSongMenu.MenuShow(SM_Playlist) + else + ScreenSongMenu.MenuShow(SM_Main); + end + else + begin + ScreenSongMenu.MenuShow(SM_Playlist_Load); + end; + end //Party Mode -> Show Party Menu + else ScreenSongMenu.MenuShow(SM_Party_Main); + end; + Exit; + end; + + 'P': //Show Playlist Menu + begin + if (Songs.SongList.Count > 0) AND (Mode = smNormal) then begin + ScreenSongMenu.MenuShow(SM_Playlist_Load); + end; + Exit; + end; + + 'J': //Show Jumpto Menu + begin + if (Songs.SongList.Count > 0) AND (Mode = smNormal) then + begin + ScreenSongJumpto.Visible := True; + end; + Exit; + end; + + 'E': + begin + OpenEditor; + Exit; + end; + + 'R': + begin + if (Songs.SongList.Count > 0) AND (Mode = smNormal) then begin + + if (SDL_ModState = KMOD_LSHIFT) AND (Ini.Tabs_at_startup = 1) then //Random Category + begin + I2 := 0; //Count Cats + for I:= low(CatSongs.Song) to high (CatSongs.Song) do + if CatSongs.Song[I].Main then Inc(I2); + + I2 := Random (I2)+1; //Zufall + + //Find Cat: + for I:= low(CatSongs.Song) to high (CatSongs.Song) do + begin + if CatSongs.Song[I].Main then + Dec(I2); + if (I2<=0) then + begin + //Show Cat in Top Left Mod + ShowCatTL (I); + + Interaction := I; + + CatSongs.ShowCategoryList; + CatSongs.ClickCategoryButton(I); + SelectNext; + FixSelected; + break; + end; + end; + + + end + else if (SDL_ModState = KMOD_LCTRL) AND (Ini.Tabs_at_startup = 1) then //random in All Categorys + begin + repeat + I2 := Random(high(CatSongs.Song)+1) - low(CatSongs.Song)+1; + until CatSongs.Song[I2].Main = false; + + //Search Cat + for I := I2 downto low(CatSongs.Song) do + begin + if CatSongs.Song[I].Main then + break; + end; + //In I is now the categorie in I2 the song + + //Choose Cat + CatSongs.ShowCategoryList; + + //Show Cat in Top Left Mod + ShowCatTL (I); + + CatSongs.ClickCategoryButton(I); + SelectNext; + + //Fix: Not Existing Song selected: + //if (I+1=I2) then Inc(I2); + + //Choose Song + SkipTo(I2-I); + + end + else //Random in one Category + begin + SkipTo(Random(CatSongs.VisibleSongs)); + end; + AudioPlayback.PlaySound(SoundLib.Change); + + ChangeMusic; + SetScroll4; + //UpdateLCD; //TODO: maybe LCD Support as Plugin? + end; + Exit; + end; + end; // normal keys + + // check special keys + case PressedKey of SDLK_ESCAPE, SDLK_BACKSPACE : begin @@ -440,40 +569,6 @@ begin end; end; - SDLK_M: //Show SongMenu - begin - if (Songs.SongList.Count > 0) then begin - if (Mode = smNormal) then begin - if not CatSongs.Song[Interaction].Main then begin // clicked on Song - if CatSongs.CatNumShow = -3 then - ScreenSongMenu.MenuShow(SM_Playlist) - else - ScreenSongMenu.MenuShow(SM_Main); - end - else - begin - ScreenSongMenu.MenuShow(SM_Playlist_Load); - end; - end //Party Mode -> Show Party Menu - else ScreenSongMenu.MenuShow(SM_Party_Main); - end; - end; - - SDLK_P: //Show Playlist Menu - begin - if (Songs.SongList.Count > 0) AND (Mode = smNormal) then begin - ScreenSongMenu.MenuShow(SM_Playlist_Load); - end; - end; - - SDLK_J: //Show Jumpto Menu - begin - if (Songs.SongList.Count > 0) AND (Mode = smNormal) then - begin - ScreenSongJumpto.Visible := True; - end; - end; - SDLK_DOWN: begin if (Mode = smNormal) then @@ -582,87 +677,6 @@ begin end; end; - SDLK_E: - begin - OpenEditor; - end; - - SDLK_R: - begin - if (Songs.SongList.Count > 0) AND (Mode = smNormal) then begin - - if (SDL_ModState = KMOD_LSHIFT) AND (Ini.Tabs_at_startup = 1) then //Random Category - begin - I2 := 0; //Count Cats - for I:= low(CatSongs.Song) to high (CatSongs.Song) do - if CatSongs.Song[I].Main then Inc(I2); - - I2 := Random (I2)+1; //Zufall - - //Find Cat: - for I:= low(CatSongs.Song) to high (CatSongs.Song) do - begin - if CatSongs.Song[I].Main then - Dec(I2); - if (I2<=0) then - begin - //Show Cat in Top Left Mod - ShowCatTL (I); - - Interaction := I; - - CatSongs.ShowCategoryList; - CatSongs.ClickCategoryButton(I); - SelectNext; - FixSelected; - break; - end; - end; - - - end - else if (SDL_ModState = KMOD_LCTRL) AND (Ini.Tabs_at_startup = 1) then //random in All Categorys - begin - repeat - I2 := Random(high(CatSongs.Song)+1) - low(CatSongs.Song)+1; - until CatSongs.Song[I2].Main = false; - - //Search Cat - for I := I2 downto low(CatSongs.Song) do - begin - if CatSongs.Song[I].Main then - break; - end; - //In I is now the categorie in I2 the song - - //Choose Cat - CatSongs.ShowCategoryList; - - //Show Cat in Top Left Mod - ShowCatTL (I); - - CatSongs.ClickCategoryButton(I); - SelectNext; - - //Fix: Not Existing Song selected: - //if (I+1=I2) then Inc(I2); - - //Choose Song - SkipTo(I2-I); - - end - else //Random in one Category - begin - SkipTo(Random(CatSongs.VisibleSongs)); - end; - AudioPlayback.PlaySound(SoundLib.Change); - - ChangeMusic; - SetScroll4; - //UpdateLCD; //TODO: maybe LCD Support as Plugin? - end; - end; - SDLK_1: begin //Joker // to-do : Party {if (Mode = smPartyMode) AND (PartySession.Teams.NumTeams >= 1) AND (PartySession.Teams.Teaminfo[0].Joker > 0) then diff --git a/Game/Code/Screens/UScreenSongJumpto.pas b/Game/Code/Screens/UScreenSongJumpto.pas index a98edec5..89d198cc 100644 --- a/Game/Code/Screens/UScreenSongJumpto.pas +++ b/Game/Code/Screens/UScreenSongJumpto.pas @@ -44,8 +44,10 @@ begin Result := true; If (PressedDown) Then begin // Key Down - case PressedKey of - SDLK_0..SDLK_9, SDLK_A..SDLK_Z, SDLK_SPACE, SDLK_MINUS, SDLK_EXCLAIM, SDLK_COMMA, SDLK_SLASH, SDLK_ASTERISK, SDLK_QUESTION, SDLK_QUOTE, SDLK_QUOTEDBL, SDLK_LEFTBRACKET, SDLK_SEMICOLON: + // check normal keys + case CharCode of + '0'..'9', 'a'..'z', 'A'..'Z', ' ', '-', '_', '!', ',', '<', '/', '*', '?', '''', '"', + '[', '{', ';', ':': begin if Interaction = 0 then begin @@ -53,7 +55,10 @@ begin SetTextFound(CatSongs.SetFilter(Button[0].Text[0].Text, SelectType)); end; end; + end; + // check special keys + case PressedKey of SDLK_BACKSPACE: begin if (Interaction = 0) AND (Length(Button[0].Text[0].Text) > 0) then diff --git a/Game/Code/Screens/UScreenSongMenu.pas b/Game/Code/Screens/UScreenSongMenu.pas index e3ec825e..9cbb1be9 100644 --- a/Game/Code/Screens/UScreenSongMenu.pas +++ b/Game/Code/Screens/UScreenSongMenu.pas @@ -67,17 +67,21 @@ uses UGraphic, function TScreenSongMenu.ParseInput(PressedKey: Cardinal; CharCode: WideChar; PressedDown: Boolean): Boolean; begin Result := true; - If (PressedDown) Then + if (PressedDown) then begin // Key Down - if (CurMenu = SM_Playlist_New) AND (Interaction=0) then + if (CurMenu = SM_Playlist_New) AND (Interaction=0) then begin - case PressedKey of - SDLK_0..SDLK_9, SDLK_A..SDLK_Z, SDLK_SPACE, SDLK_MINUS, SDLK_EXCLAIM, SDLK_COMMA, SDLK_SLASH, SDLK_ASTERISK, SDLK_QUESTION, SDLK_QUOTE, SDLK_QUOTEDBL: + // check normal keys + case WideUpperCase(CharCode)[1] of + '0'..'9', 'A'..'Z', ' ', '-', '_', '!', ',', '<', '/', '*', '?', '''', '"': begin Button[Interaction].Text[0].Text := Button[Interaction].Text[0].Text + CharCode; exit; end; + end; + // check special keys + case PressedKey of SDLK_BACKSPACE: begin Button[Interaction].Text[0].DeleteLastL; @@ -86,13 +90,17 @@ begin end; end; - case PressedKey of - SDLK_Q: - begin - Result := false; - end; - + // check normal keys + case WideUpperCase(CharCode)[1] of + 'Q': + begin + Result := false; + Exit; + end; + end; + // check special keys + case PressedKey of SDLK_ESCAPE, SDLK_BACKSPACE : begin @@ -149,10 +157,8 @@ begin end; end; end; - - - end; - end; + end; // case + end; // if end; constructor TScreenSongMenu.Create; diff --git a/Game/Code/Screens/UScreenStatDetail.pas b/Game/Code/Screens/UScreenStatDetail.pas index 08a378ca..14f4808e 100644 --- a/Game/Code/Screens/UScreenStatDetail.pas +++ b/Game/Code/Screens/UScreenStatDetail.pas @@ -44,12 +44,17 @@ begin Result := true; If (PressedDown) Then begin // Key Down - case PressedKey of - SDLK_Q: + // check normal keys + case WideUpperCase(CharCode)[1] of + 'Q': begin Result := false; + Exit; end; - + end; + + // check special keys + case PressedKey of SDLK_ESCAPE, SDLK_BACKSPACE : begin diff --git a/Game/Code/Screens/UScreenStatMain.pas b/Game/Code/Screens/UScreenStatMain.pas index f83fa005..87bd1b5f 100644 --- a/Game/Code/Screens/UScreenStatMain.pas +++ b/Game/Code/Screens/UScreenStatMain.pas @@ -52,12 +52,17 @@ begin Result := true; If (PressedDown) Then begin // Key Down + // check normal keys + case WideUpperCase(CharCode)[1] of + 'Q': + begin + Result := false; + Exit; + end; + end; + + // check special keys case PressedKey of - SDLK_Q: - begin - Result := false; - end; - SDLK_ESCAPE, SDLK_BACKSPACE : begin diff --git a/Game/Code/Screens/UScreenTop5.pas b/Game/Code/Screens/UScreenTop5.pas index 4c17a437..8ebb056c 100644 --- a/Game/Code/Screens/UScreenTop5.pas +++ b/Game/Code/Screens/UScreenTop5.pas @@ -37,13 +37,17 @@ function TScreenTop5.ParseInput(PressedKey: Cardinal; CharCode: WideChar; Presse begin Result := true; If (PressedDown) Then begin + // check normal keys + case WideUpperCase(CharCode)[1] of + 'Q': + begin + Result := false; + Exit; + end; + end; + + // check special keys case PressedKey of - SDLK_Q: - begin - Result := false; - end; - - SDLK_ESCAPE, SDLK_BACKSPACE, SDLK_RETURN: -- cgit v1.2.3