DEADSOFTWARE

Reserved key range for virtual keyboard + alternative virtkbd layout
[d2df-sdl.git] / src / game / g_console.pas
index 2ae89e537b6e80fddf85cfb35d325fd530976569..2f3103a014017aa3e0fe150310f4624f953caf15 100644 (file)
@@ -60,7 +60,7 @@ implementation
 
 uses
   g_textures, g_main, e_graphics, e_input, g_game,
-  SysUtils, g_basic, g_options, Math,
+  SysUtils, g_basic, g_options, Math, g_touch,
   g_menu, g_language, g_net, g_netmsg, e_log, conbuf;
 
 
@@ -469,6 +469,13 @@ begin
       g_Console_Add('exec <script file>');
   end;
 
+  if (cmd = 'ver') or (cmd = 'version') then
+  begin
+    conwriteln('Doom 2D: Forever v. ' + GAME_VERSION);
+    conwritefln('Net protocol v. %d', [NET_PROTOCOL_VER]);
+    conwritefln('Build date: %s at %s', [GAME_BUILDDATE, GAME_BUILDTIME]);
+  end;
+
   if cmd = 'alias' then
   begin
     // alias [alias_name] [commands]
@@ -602,6 +609,8 @@ begin
   AddCommand('exec', ConsoleCommands);
   AddCommand('alias', ConsoleCommands);
   AddCommand('call', ConsoleCommands);
+  AddCommand('ver', ConsoleCommands);
+  AddCommand('version', ConsoleCommands);
 
   AddCommand('d_window', DebugCommands);
   AddCommand('d_sounds', DebugCommands);
@@ -917,6 +926,7 @@ begin
   if gChatShow then Exit;
   gConsoleShow := not gConsoleShow;
   Cons_Shown := True;
+  g_Touch_ShowKeyboard(gConsoleShow or gChatShow);
 end;
 
 procedure g_Console_Chat_Switch(Team: Boolean = False);
@@ -929,6 +939,7 @@ begin
     gChatEnter := False;
   Line := '';
   CPos := 1;
+  g_Touch_ShowKeyboard(gConsoleShow or gChatShow);
 end;
 
 procedure g_Console_Char(C: AnsiChar);
@@ -1068,13 +1079,13 @@ begin
     IK_DELETE:
       if (Length(Line) > 0) and (CPos <= Length(Line)) then
         Delete(Line, CPos, 1);
-    IK_LEFT, IK_KPLEFT:
+    IK_LEFT, IK_KPLEFT, VK_LEFT:
       if CPos > 1 then
         CPos := CPos - 1;
-    IK_RIGHT, IK_KPRIGHT:
+    IK_RIGHT, IK_KPRIGHT, VK_RIGHT:
       if CPos <= Length(Line) then
         CPos := CPos + 1;
-    IK_RETURN, IK_KPRETURN:
+    IK_RETURN, IK_KPRETURN, VK_OPEN, VK_FIRE:
     begin
       if Cons_Shown then
         g_Console_Process(Line)
@@ -1105,12 +1116,13 @@ begin
           CPos := 1;
           gChatShow := False;
           gJustChatted := True;
+          g_Touch_ShowKeyboard(gConsoleShow or gChatShow);
         end;
     end;
     IK_TAB:
       if not gChatShow then
         Complete();
-    IK_DOWN, IK_KPDOWN:
+    IK_DOWN, IK_KPDOWN, VK_DOWN:
       if not gChatShow then
         if (CommandHistory <> nil) and
            (CmdIndex < Length(CommandHistory)) then
@@ -1120,7 +1132,7 @@ begin
           Line := CommandHistory[CmdIndex];
           CPos := Length(Line) + 1;
         end;
-    IK_UP, IK_KPUP:
+    IK_UP, IK_KPUP, VK_UP:
       if not gChatShow then
         if (CommandHistory <> nil) and
            (CmdIndex <= Length(CommandHistory)) then
@@ -1130,9 +1142,9 @@ begin
           Line := CommandHistory[CmdIndex];
           Cpos := Length(Line) + 1;
         end;
-    IK_PAGEUP, IK_KPPAGEUP: // PgUp
+    IK_PAGEUP, IK_KPPAGEUP, VK_PREV: // PgUp
       if not gChatShow then Inc(conSkipLines);
-    IK_PAGEDN, IK_KPPAGEDN: // PgDown
+    IK_PAGEDN, IK_KPPAGEDN, VK_NEXT: // PgDown
       if not gChatShow and (conSkipLines > 0) then Dec(conSkipLines);
     IK_HOME, IK_KPHOME:
       CPos := 1;