DEADSOFTWARE

fix chat/console input
[d2df-sdl.git] / src / game / g_touch.pas
index 972c5422283f1c53f42d7ceb50097d7488661f14..b9250acb63bd32958b50e96cb4617e1b0d6360f3 100644 (file)
@@ -37,7 +37,7 @@ implementation
 
   uses
     SysUtils,
-    e_log, e_graphics, e_input, g_options, g_game, g_main, g_gui, g_weapons, g_console;
+    e_log, e_graphics, e_input, g_options, g_game, g_main, g_gui, g_weapons, g_console, g_window;
 
   var
     angleFire: Boolean;
@@ -184,6 +184,7 @@ implementation
   procedure g_Touch_Init;
   begin
 {$IFNDEF HEADLESS}
+    g_Touch_ShowKeyboard(FALSE);
     g_touch_enabled := SDL_GetNumTouchDevices() > 0
 {$ENDIF}
   end;
@@ -191,10 +192,10 @@ implementation
   procedure g_Touch_ShowKeyboard(yes: Boolean);
   begin
 {$IFNDEF HEADLESS}
-    if not g_touch_enabled then
-      Exit;
-
-    if yes then
+    if g_dbg_input then
+      e_LogWritefln('g_Touch_ShowKeyboard(%s)', [yes]);
+    (* on desktop we always receive text (needed for cheats) *)
+    if yes or (SDL_HasScreenKeyboardSupport() = SDL_FALSE) then
       SDL_StartTextInput
     else
       SDL_StopTextInput
@@ -207,6 +208,9 @@ implementation
 
     procedure KeyUp (finger, i: Integer);
     begin
+      if g_dbg_input then
+        e_LogWritefln('Input Debug: g_touch.KeyUp, finger=%s, key=%s', [finger, i]);
+
       keyFinger[i] := 0;
       e_KeyUpDown(i, False);
       g_Console_ProcessBind(i, False);
@@ -226,6 +230,9 @@ implementation
 
     procedure KeyDown (finger, i: Integer);
     begin
+      if g_dbg_input then
+        e_LogWritefln('Input Debug: g_touch.KeyDown, finger=%s, key=%s', [finger, i]);
+
       keyFinger[i] := finger;
       e_KeyUpDown(i, True);
       g_Console_ProcessBind(i, True);