Browse Source

* PChar -> PAnsiChar

Michaël Van Canneyt 2 years ago
parent
commit
a8a778395b
37 changed files with 654 additions and 654 deletions
  1. 20 20
      packages/rtl-console/src/amicommon/crt.pp
  2. 5 5
      packages/rtl-console/src/amicommon/keyboard.pp
  3. 8 8
      packages/rtl-console/src/amicommon/vidcrt.pp
  4. 13 13
      packages/rtl-console/src/amicommon/video.pp
  5. 12 12
      packages/rtl-console/src/emx/crt.pp
  6. 6 6
      packages/rtl-console/src/go32v2/crt.pp
  7. 2 2
      packages/rtl-console/src/go32v2/vesamode.pp
  8. 3 3
      packages/rtl-console/src/inc/crt.inc
  9. 1 1
      packages/rtl-console/src/inc/crth.inc
  10. 8 8
      packages/rtl-console/src/inc/keyboard.inc
  11. 11 11
      packages/rtl-console/src/inc/keybrdh.inc
  12. 1 1
      packages/rtl-console/src/inc/keyscan.inc
  13. 4 4
      packages/rtl-console/src/inc/video.inc
  14. 6 6
      packages/rtl-console/src/msdos/crt.pp
  15. 2 2
      packages/rtl-console/src/msdos/vesamode.pp
  16. 4 4
      packages/rtl-console/src/netware/crt.pp
  17. 37 37
      packages/rtl-console/src/netware/nwsys.inc
  18. 6 6
      packages/rtl-console/src/netwlibc/crt.pp
  19. 8 8
      packages/rtl-console/src/os2/crt.pp
  20. 29 29
      packages/rtl-console/src/unix/crt.pp
  21. 362 362
      packages/rtl-console/src/unix/keyboard.pp
  22. 1 1
      packages/rtl-console/src/unix/mouse.pp
  23. 37 37
      packages/rtl-console/src/unix/terminfo.pp
  24. 1 1
      packages/rtl-console/src/unix/unixkvmbase.pp
  25. 30 30
      packages/rtl-console/src/unix/video.pp
  26. 6 6
      packages/rtl-console/src/watcom/crt.pp
  27. 7 7
      packages/rtl-console/src/win/crt.pp
  28. 6 6
      packages/rtl-console/src/win/keyboard.pp
  29. 1 1
      packages/rtl-console/src/win/video.pp
  30. 5 5
      packages/rtl-console/src/win16/crt.pp
  31. 1 1
      packages/rtl-console/tests/kbd1.pp
  32. 2 2
      packages/rtl-console/tests/kbd2.pp
  33. 1 1
      packages/rtl-console/tests/kbdbdump.pp
  34. 1 1
      packages/rtl-console/tests/kbddump.pp
  35. 4 4
      packages/rtl-console/tests/kbdutil.pp
  36. 1 1
      packages/rtl-console/tests/video4.pp
  37. 2 2
      packages/rtl-console/tests/vidutil.pp

+ 20 - 20
packages/rtl-console/src/amicommon/crt.pp

@@ -65,15 +65,15 @@ const
 
 
 var
 var
   // multiple keys
   // multiple keys
-  LastKeys: string = '';
+  LastKeys: Shortstring = '';
   Pens: array[0..15] of LongInt;
   Pens: array[0..15] of LongInt;
   FGPen: Byte = Black;
   FGPen: Byte = Black;
   BGPen: Byte = LightGray;
   BGPen: Byte = LightGray;
 
 
 
 
-function IntToStr(i: LongInt): AnsiString;
+function IntToStr(i: LongInt): ShortString;
 var
 var
-  s: AnsiString;
+  s: ShortString;
 begin
 begin
   Str(i, s);
   Str(i, s);
   IntToStr := s;
   IntToStr := s;
@@ -187,7 +187,7 @@ var
   fh: BPTR;
   fh: BPTR;
   Actual: Integer;
   Actual: Integer;
   Width, Height: LongInt;
   Width, Height: LongInt;
-  report: array[0..25] of Char;
+  report: array[0..25] of AnsiChar;
   ToSend: AnsiString;
   ToSend: AnsiString;
   Start, Ende: LongInt;
   Start, Ende: LongInt;
 begin
 begin
@@ -220,13 +220,13 @@ begin
           Inc(Ende);
           Inc(Ende);
         end;
         end;
         // skip over #$9b'1;1;'
         // skip over #$9b'1;1;'
-        if GetIntValues(PChar(@report[Start + 5]), Height, Width) then
+        if GetIntValues(PAnsiChar(@report[Start + 5]), Height, Width) then
         begin
         begin
           Pt.X := Width + 1;
           Pt.X := Width + 1;
           Pt.Y := Height + 1;
           Pt.Y := Height + 1;
         end
         end
         else
         else
-          sysdebugln('scan failed. ' + PChar(@report[Start + 5]));
+          sysdebugln('scan failed. ' + PAnsiChar(@report[Start + 5]));
       end;
       end;
       //SetMode(fh, 0); // Normal mode
       //SetMode(fh, 0); // Normal mode
     end;
     end;
@@ -263,7 +263,7 @@ var
   fh: BPTR;
   fh: BPTR;
   Actual: Integer;
   Actual: Integer;
   PosX, PosY: LongInt;
   PosX, PosY: LongInt;
-  report: array[0..25] of Char;
+  report: array[0..25] of AnsiChar;
   ToSend: AnsiString;
   ToSend: AnsiString;
   Start, Ende: LongInt;
   Start, Ende: LongInt;
 begin
 begin
@@ -296,13 +296,13 @@ begin
           Inc(Ende);
           Inc(Ende);
         end;
         end;
         // skip over #$9b
         // skip over #$9b
-        if GetIntValues(PChar(@report[Start + 1]), PosY, PosX) then
+        if GetIntValues(PAnsiChar(@report[Start + 1]), PosY, PosX) then
         begin
         begin
           Pt.X := PosX;
           Pt.X := PosX;
           Pt.Y := PosY;
           Pt.Y := PosY;
         end
         end
         else
         else
-          sysdebugln('scan failed. ' +  PChar(@report[Start + 1]));
+          sysdebugln('scan failed. ' +  PAnsiChar(@report[Start + 1]));
       end;
       end;
       //SetMode(fh, 0); // Normal mode
       //SetMode(fh, 0); // Normal mode
     end;
     end;
@@ -397,11 +397,11 @@ begin
   GotoXY(1, 1);
   GotoXY(1, 1);
 end;
 end;
 
 
-function WaitForKey: string;
+function WaitForKey: ShortString;
 var
 var
   OutP: BPTR; // Output file handle
   OutP: BPTR; // Output file handle
-  Res: Char; // Char to get from console
-  Key: string; // result
+  Res: AnsiChar; // AnsiChar to get from console
+  Key: ShortString; // result
 begin
 begin
   Key := '';
   Key := '';
   OutP := DosOutput();
   OutP := DosOutput();
@@ -442,9 +442,9 @@ end;
 
 
 type
 type
   TKeyMap = record
   TKeyMap = record
-    con: string;
-    c1: Char;
-    c2: Char;
+    con: ShortString;
+    c1: AnsiChar;
+    c2: AnsiChar;
   end;
   end;
 const
 const
   KeyMapping: array[0..37] of TKeyMap =
   KeyMapping: array[0..37] of TKeyMap =
@@ -492,9 +492,9 @@ const
      (con: #155' @'; c1: #0; c2:#68;)  // Shift Cursor Left
      (con: #155' @'; c1: #0; c2:#68;)  // Shift Cursor Left
      );
      );
 
 
-function ReadKey: Char;
+function ReadKey: AnsiChar;
 var
 var
-  Res: string;
+  Res: ShortString;
   i: Integer;
   i: Integer;
 begin
 begin
   // we got a key to sent
   // we got a key to sent
@@ -704,7 +704,7 @@ begin
   WindMaxY := MaxRows - 1;
   WindMaxY := MaxRows - 1;
 end;
 end;
 
 
-procedure WriteChar(c: Char; var Curr: TPoint; var s: AnsiString);
+procedure WriteChar(c: AnsiChar; var Curr: TPoint; var s: AnsiString);
 //var
 //var
 //  i: Integer;
 //  i: Integer;
 var
 var
@@ -730,7 +730,7 @@ begin
     begin
     begin
       // all other Chars
       // all other Chars
       s := s + c;
       s := s + c;
-      //sysdebugln(' Char: ' + c + ' ' + IntToStr(Curr.X) + ' ' + IntToStr(Curr.Y) + ' - ' + IntToStr(WindMinY) + ' ' + IntToStr(WindMaxY));
+      //sysdebugln(' AnsiChar: ' + c + ' ' + IntToStr(Curr.X) + ' ' + IntToStr(Curr.Y) + ' - ' + IntToStr(WindMinY) + ' ' + IntToStr(WindMaxY));
       case c of
       case c of
         #10: begin
         #10: begin
           if WindMinX > 0 then
           if WindMinX > 0 then
@@ -788,7 +788,7 @@ end;
 
 
 Procedure CrtRead(Var F: TextRec);
 Procedure CrtRead(Var F: TextRec);
 var
 var
-  ch : Char;
+  ch : AnsiChar;
 
 
   procedure BackSpace;
   procedure BackSpace;
   begin
   begin

+ 5 - 5
packages/rtl-console/src/amicommon/keyboard.pp

@@ -184,7 +184,7 @@ begin
     LastShiftState := LastShiftState or $40;
     LastShiftState := LastShiftState or $40;
 end;
 end;
 
 
-procedure AnsiToIBMChar(var c: Char); inline;
+procedure AnsiToIBMChar(var c: AnsiChar); inline;
 begin
 begin
   // https://en.wikipedia.org/wiki/Code_page_437
   // https://en.wikipedia.org/wiki/Code_page_437
   case c of
   case c of
@@ -232,7 +232,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure IBMToAnsiChar(var c: Char); inline;
+procedure IBMToAnsiChar(var c: AnsiChar); inline;
 begin
 begin
   case c of
   case c of
     // line 8
     // line 8
@@ -314,7 +314,7 @@ var
   MouseX: LongInt;
   MouseX: LongInt;
   MouseY: LongInt;
   MouseY: LongInt;
   KeyUp: Boolean;        // Event is a key up event
   KeyUp: Boolean;        // Event is a key up event
-  Buff: array[0..19] of Char;
+  Buff: array[0..19] of AnsiChar;
   ie: TInputEvent;       // for mapchar
   ie: TInputEvent;       // for mapchar
   IAddr: Pointer;
   IAddr: Pointer;
 begin
 begin
@@ -454,7 +454,7 @@ begin
             ICode := 72;
             ICode := 72;
           if ICode = 123 then
           if ICode = 123 then
             ICode := 73;
             ICode := 73;
-          // get char from rawkey
+          // get AnsiChar from rawkey
           KeyUp := (ICode and IECODE_UP_PREFIX) <> 0;   // is key up
           KeyUp := (ICode and IECODE_UP_PREFIX) <> 0;   // is key up
           ICode := ICode and not IECODE_UP_PREFIX;      // remove key up from ICode
           ICode := ICode and not IECODE_UP_PREFIX;      // remove key up from ICode
           ie.ie_Class := IECLASS_RAWKEY;
           ie.ie_Class := IECLASS_RAWKEY;
@@ -718,7 +718,7 @@ end;
 procedure InitSystemEventWait;
 procedure InitSystemEventWait;
 var
 var
   initOK: boolean;
   initOK: boolean;
-  envBuf: array[0..15] of char;
+  envBuf: array[0..15] of AnsiChar;
 begin
 begin
   {.$if not defined(AMIGA_V1_2_ONLY)}
   {.$if not defined(AMIGA_V1_2_ONLY)}
   if GetVar('FPC_DOKEYCONVERSION',@envBuf,sizeof(envBuf),0) > -1 then
   if GetVar('FPC_DOKEYCONVERSION',@envBuf,sizeof(envBuf),0) > -1 then

+ 8 - 8
packages/rtl-console/src/amicommon/vidcrt.pp

@@ -16,7 +16,7 @@ var
   BGPen: Byte = 0;
   BGPen: Byte = 0;
   WinRect: TRect;
   WinRect: TRect;
 
 
-  LastKeys: array[0..1] of Char;
+  LastKeys: array[0..1] of AnsiChar;
   LastKeysIdx: Integer = -1;
   LastKeysIdx: Integer = -1;
 
 
 
 
@@ -25,26 +25,26 @@ begin
   PosToArray := px + py * ScreenWidth;
   PosToArray := px + py * ScreenWidth;
 end;
 end;
 
 
-procedure SetChar(p: Integer; c: Char); overload;
+procedure SetChar(p: Integer; c: AnsiChar); overload;
 begin
 begin
   if (p >= 0) and (p < VideoBufSize) then
   if (p >= 0) and (p < VideoBufSize) then
     VideoBuf^[p] := (BGPen shl 12) or (FGPen shl 8) or Byte(c);
     VideoBuf^[p] := (BGPen shl 12) or (FGPen shl 8) or Byte(c);
 end;
 end;
 
 
-procedure SetChar(x,y: Integer; c: Char); overload;
+procedure SetChar(x,y: Integer; c: AnsiChar); overload;
 begin
 begin
   SetChar(PosToArray(x,y), c);
   SetChar(PosToArray(x,y), c);
 end;
 end;
 
 
 procedure ProcessKeyEvent(NKey: TKeyEvent);
 procedure ProcessKeyEvent(NKey: TKeyEvent);
 var
 var
-  c1: Char;
+  c1: AnsiChar;
 begin
 begin
   c1 := GetKeyEventChar(NKey);
   c1 := GetKeyEventChar(NKey);
   if c1 = #0 then
   if c1 = #0 then
   begin
   begin
     LastKeys[1] := #0;
     LastKeys[1] := #0;
-    LastKeys[0] := Char((NKey shr 8) and $FF);
+    LastKeys[0] := AnsiChar((NKey shr 8) and $FF);
     LastKeysIdx := 1;
     LastKeysIdx := 1;
     case LastKeys[0] of
     case LastKeys[0] of
       #28: begin LastKeys[0] := #13; LastKeysIdx := 0; end; // Enter
       #28: begin LastKeys[0] := #13; LastKeysIdx := 0; end; // Enter
@@ -63,7 +63,7 @@ begin
   KeyPressed := (LastKeysIdx >= 0) or (PollKeyEvent <> 0);
   KeyPressed := (LastKeysIdx >= 0) or (PollKeyEvent <> 0);
 end;
 end;
 
 
-function ReadKey: Char;
+function ReadKey: AnsiChar;
 var
 var
   NKey: TKeyEvent;
   NKey: TKeyEvent;
 begin
 begin
@@ -243,7 +243,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure WriteChar(c: Char);
+procedure WriteChar(c: AnsiChar);
 var
 var
   NX,NY: Integer;
   NX,NY: Integer;
 begin
 begin
@@ -293,7 +293,7 @@ end;
 
 
 Procedure CrtRead(Var F: TextRec);
 Procedure CrtRead(Var F: TextRec);
 var
 var
-  ch : Char;
+  ch : AnsiChar;
 
 
   procedure BackSpace;
   procedure BackSpace;
   begin
   begin

+ 13 - 13
packages/rtl-console/src/amicommon/video.pp

@@ -122,12 +122,12 @@ end;
 Function GetScreen: pScreen;
 Function GetScreen: pScreen;
 begin
 begin
   GetScreen:=_OpenScreenTags(nil,[
   GetScreen:=_OpenScreenTags(nil,[
-    SA_Title          , PtrUInt(PChar(VIDEOSCREENNAME)),
+    SA_Title          , PtrUInt(PAnsiChar(VIDEOSCREENNAME)),
     SA_Left           , 0,
     SA_Left           , 0,
     SA_Top            , 0,
     SA_Top            , 0,
     SA_ShowTitle      , 0,    // Do not show the screen's TitleBar
     SA_ShowTitle      , 0,    // Do not show the screen's TitleBar
     SA_Type           , PUBLICSCREEN_F, // pubscreen
     SA_Type           , PUBLICSCREEN_F, // pubscreen
-    SA_PubName        , PtrUInt(PChar(VIDEOSCREENNAME)),
+    SA_PubName        , PtrUInt(PAnsiChar(VIDEOSCREENNAME)),
     SA_Draggable      , 1,
     SA_Draggable      , 1,
     SA_Quiet          , 1,
     SA_Quiet          , 1,
     SA_LikeWorkbench  , 1,     // Let OS
     SA_LikeWorkbench  , 1,     // Let OS
@@ -175,7 +175,7 @@ const
 
 
 Function GetWindow: PWindow;
 Function GetWindow: PWindow;
 var
 var
-  envBuf: array[0..15] of char;
+  envBuf: array[0..15] of AnsiChar;
   videoDefaultFlags: PtrUInt;
   videoDefaultFlags: PtrUInt;
 begin
 begin
   videoDefaultFlags:=VIDEO_WFLG_DEFAULTS;
   videoDefaultFlags:=VIDEO_WFLG_DEFAULTS;
@@ -216,7 +216,7 @@ begin
       WA_InnerHeight, LastH*VideoFontHeight,
       WA_InnerHeight, LastH*VideoFontHeight,
       WA_MaxWidth   , 32768,
       WA_MaxWidth   , 32768,
       WA_MaxHeight  , 32768,
       WA_MaxHeight  , 32768,
-      WA_Title      , PtrUInt(PChar('FPC Video Window Output')),
+      WA_Title      , PtrUInt(PAnsiChar('FPC Video Window Output')),
       WA_Activate   , 1,
       WA_Activate   , 1,
       WA_FLAGS      , (videoDefaultFlags or
       WA_FLAGS      , (videoDefaultFlags or
                        WFLG_DRAGBAR       or WFLG_DEPTHGADGET   or WFLG_SIZEGADGET or
                        WFLG_DRAGBAR       or WFLG_DEPTHGADGET   or WFLG_SIZEGADGET or
@@ -253,7 +253,7 @@ var
   P: PWord;
   P: PWord;
   flags: DWord;
   flags: DWord;
   i: LongInt;
   i: LongInt;
-  envBuf: array[0..15] of char;
+  envBuf: array[0..15] of AnsiChar;
 begin
 begin
 {$IFDEF MORPHOS}
 {$IFDEF MORPHOS}
   InitGraphicsLibrary;
   InitGraphicsLibrary;
@@ -552,7 +552,7 @@ begin
 
 
   if crType = crUnderLine then
   if crType = crUnderLine then
   begin
   begin
-    { draw two lines at the bottom of the char, in case of underline cursor }
+    { draw two lines at the bottom of the AnsiChar, in case of underline cursor }
     if videoFontHeight = 8 then
     if videoFontHeight = 8 then
       begin
       begin
         GfxMove(rp, sX, sY + 7); Draw(rp, sX + 7, sY + 7);
         GfxMove(rp, sX, sY + 7); Draw(rp, sX + 7, sY + 7);
@@ -649,7 +649,7 @@ begin
     end;
     end;
     {$ifdef VideoSpeedTest}
     {$ifdef VideoSpeedTest}
     if NumChanged > 100 then
     if NumChanged > 100 then
-      writeln('redraw time: ', floattoStrF((Now-t)* 24 * 60 * 60 * 1000000 / NumChanged, fffixed, 8,3), ' us/char' ); // ms
+      writeln('redraw time: ', floattoStrF((Now-t)* 24 * 60 * 60 * 1000000 / NumChanged, fffixed, 8,3), ' us/AnsiChar' ); // ms
     {$endif}
     {$endif}
   end;
   end;
 
 
@@ -817,21 +817,21 @@ var
 
 
 procedure SetWindowTitle(const winTitle: AnsiString; const screenTitle: AnsiString);
 procedure SetWindowTitle(const winTitle: AnsiString; const screenTitle: AnsiString);
 var
 var
-  winT: PChar;
-  screenT: PChar;
+  winT: PAnsiChar;
+  screenT: PAnsiChar;
 begin
 begin
   globWinT:=winTitle;
   globWinT:=winTitle;
   globScreenT:=screenTitle;
   globScreenT:=screenTitle;
   if VideoWindow <> nil then
   if VideoWindow <> nil then
   begin
   begin
     if globWinT = '' then
     if globWinT = '' then
-      winT:=PChar(PtrInt(-1))
+      winT:=PAnsiChar(PtrInt(-1))
     else
     else
-      winT:=PChar(globWinT);
+      winT:=PAnsiChar(globWinT);
     if globScreenT = '' then
     if globScreenT = '' then
-      screenT:=PChar(PtrInt(-1))
+      screenT:=PAnsiChar(PtrInt(-1))
     else
     else
-      screenT:=PChar(globScreenT);
+      screenT:=PAnsiChar(globScreenT);
     SetWindowTitles(VideoWindow, winT, screenT);
     SetWindowTitles(VideoWindow, winT, screenT);
   end;
   end;
 end;
 end;

+ 12 - 12
packages/rtl-console/src/emx/crt.pp

@@ -30,13 +30,13 @@ var
 
 
 implementation
 implementation
 
 
-const   extkeycode:char=#0;
+const   extkeycode:AnsiChar=#0;
 
 
 var maxrows,maxcols:word;
 var maxrows,maxcols:word;
     calibration:longint;
     calibration:longint;
 
 
 type    Tkbdkeyinfo=record
 type    Tkbdkeyinfo=record
-            charcode,scancode:char;
+            charcode,scancode:AnsiChar;
             fbstatus,bnlsshift:byte;
             fbstatus,bnlsshift:byte;
             fsstate:word;
             fsstate:word;
             time:longint;
             time:longint;
@@ -105,9 +105,9 @@ function viogetcurpos(var row,column:word;viohandle:longint):word; cdecl;
                       external 'EMXWRAP' index 109;
                       external 'EMXWRAP' index 109;
 function viosetcurpos(row,column,viohandle:longint):word; cdecl;
 function viosetcurpos(row,column,viohandle:longint):word; cdecl;
                       external 'EMXWRAP' index 115;
                       external 'EMXWRAP' index 115;
-function viowrtTTY(s:Pchar;len,viohandle:longint):word; cdecl;
+function viowrtTTY(s:PAnsiChar;len,viohandle:longint):word; cdecl;
                       external 'EMXWRAP' index 119;
                       external 'EMXWRAP' index 119;
-function viowrtcharstratt(s:Pchar;len,row,col:longint;var attr:byte;
+function viowrtcharstratt(s:PAnsiChar;len,row,col:longint;var attr:byte;
                           viohandle:longint):word; cdecl;
                           viohandle:longint):word; cdecl;
                           external 'EMXWRAP' index 148;
                           external 'EMXWRAP' index 148;
 function viogetmode(var Amodeinfo:viomodeinfo;viohandle:longint):word; cdecl;
 function viogetmode(var Amodeinfo:viomodeinfo;viohandle:longint):word; cdecl;
@@ -314,12 +314,12 @@ begin
         end;
         end;
 end;
 end;
 
 
-function readkey:char;
+function readkey:AnsiChar;
 
 
 {Reads the next character from the keyboard.}
 {Reads the next character from the keyboard.}
 
 
 var Akeyrec:Tkbdkeyinfo;
 var Akeyrec:Tkbdkeyinfo;
-    c,s:char;
+    c,s:AnsiChar;
 
 
 begin
 begin
     if extkeycode<>#0 then
     if extkeycode<>#0 then
@@ -543,17 +543,17 @@ begin
 end;
 end;
 
 
 {$ASMMODE INTEL}
 {$ASMMODE INTEL}
-procedure writePchar(s:Pchar;len:word);
+procedure writePchar(s:PAnsiChar;len:word);
 
 
 {Write a series of characters to the screen.
 {Write a series of characters to the screen.
 
 
  Not very fast, but is just text-mode isn't it?}
  Not very fast, but is just text-mode isn't it?}
 
 
 var x,y:word;
 var x,y:word;
-    c:char;
+    c:AnsiChar;
     i,n:integer;
     i,n:integer;
     screl:word;
     screl:word;
-    ca:Pchar;
+    ca:PAnsiChar;
 
 
 begin
 begin
     i:=0;
     i:=0;
@@ -624,8 +624,8 @@ function crtread(var f:textrec):word;
 {Read a series of characters from the console.}
 {Read a series of characters from the console.}
 
 
 var max,curpos:integer;
 var max,curpos:integer;
-    c:char;
-    clist:array[0..2] of char;
+    c:AnsiChar;
+    clist:array[0..2] of AnsiChar;
 
 
 begin
 begin
     max:=f.bufsize-2;
     max:=f.bufsize-2;
@@ -671,7 +671,7 @@ function crtwrite(var f:textrec):word;
 {Write a series of characters to the console.}
 {Write a series of characters to the console.}
 
 
 begin
 begin
-    writePchar(Pchar(f.bufptr),f.bufpos);
+    writePchar(PAnsiChar(f.bufptr),f.bufpos);
     f.bufpos:=0;
     f.bufpos:=0;
     crtwrite:=0;
     crtwrite:=0;
 end;
 end;

+ 6 - 6
packages/rtl-console/src/go32v2/crt.pp

@@ -309,12 +309,12 @@ End;
 
 
 var
 var
    is_last : boolean;
    is_last : boolean;
-   last    : char;
+   last    : AnsiChar;
 
 
-function readkey : char;
+function readkey : AnsiChar;
 var
 var
-  char2 : char;
-  char1 : char;
+  char2 : AnsiChar;
+  char1 : AnsiChar;
   regs : trealregs;
   regs : trealregs;
 begin
 begin
   if is_last then
   if is_last then
@@ -550,7 +550,7 @@ end;
 var
 var
   CurrX,CurrY : longint;
   CurrX,CurrY : longint;
 
 
-Procedure WriteChar(c:char);
+Procedure WriteChar(c:AnsiChar);
 var
 var
   regs : trealregs;
   regs : trealregs;
 begin
 begin
@@ -612,7 +612,7 @@ Procedure CrtRead(Var F: TextRec);
   end;
   end;
 
 
 var
 var
-  ch : Char;
+  ch : AnsiChar;
 Begin
 Begin
   GetScreenCursor(CurrX,CurrY);
   GetScreenCursor(CurrX,CurrY);
   f.bufpos:=0;
   f.bufpos:=0;

+ 2 - 2
packages/rtl-console/src/go32v2/vesamode.pp

@@ -27,9 +27,9 @@ unit vesamode;
 
 
        pwordarray = ^twordarray;
        pwordarray = ^twordarray;
        TVESAInfoBlock = record
        TVESAInfoBlock = record
-         VESASignature   : ARRAY[0..3] OF CHAR;
+         VESASignature   : ARRAY[0..3] OF AnsiChar;
          VESAVersion     : WORD;
          VESAVersion     : WORD;
-         OEMStringPtr    : PChar;
+         OEMStringPtr    : PAnsiChar;
          Capabilities    : LONGINT;
          Capabilities    : LONGINT;
          VideoModePtr    : pwordarray;
          VideoModePtr    : pwordarray;
          TotalMemory     : WORD;
          TotalMemory     : WORD;

+ 3 - 3
packages/rtl-console/src/inc/crt.inc

@@ -204,7 +204,7 @@ threadvar
  CurrX, CurrY: dword;
  CurrX, CurrY: dword;
 
 
 
 
-procedure WriteChar (C: char);
+procedure WriteChar (C: AnsiChar);
 begin
 begin
  case C of
  case C of
   #7: WriteBell;
   #7: WriteBell;
@@ -241,7 +241,7 @@ begin
   begin
   begin
    GetScreenCursor (CurrX, CurrY);
    GetScreenCursor (CurrX, CurrY);
    for I := 0 to Pred (F.BufPos) do
    for I := 0 to Pred (F.BufPos) do
-    WriteChar ((PChar (F.BufPtr) + I)^);
+    WriteChar ((PAnsiChar (F.BufPtr) + I)^);
    SetScreenCursor (CurrX, CurrY);
    SetScreenCursor (CurrX, CurrY);
    F.BufPos := 0;
    F.BufPos := 0;
   end;
   end;
@@ -252,7 +252,7 @@ end;
 function CrtRead (var F: TextRec): integer;
 function CrtRead (var F: TextRec): integer;
 {Read a series of characters from the console.}
 {Read a series of characters from the console.}
 var
 var
- C: char;
+ C: AnsiChar;
 begin
 begin
  GetScreenCursor (CurrX, CurrY);
  GetScreenCursor (CurrX, CurrY);
  F.BufPos := 0;
  F.BufPos := 0;

+ 1 - 1
packages/rtl-console/src/inc/crth.inc

@@ -73,7 +73,7 @@ type
 { Interface procedures }
 { Interface procedures }
 procedure AssignCrt(var F: Text);
 procedure AssignCrt(var F: Text);
 function KeyPressed: Boolean;
 function KeyPressed: Boolean;
-function ReadKey: Char;
+function ReadKey: AnsiChar;
 procedure TextMode (Mode: word);
 procedure TextMode (Mode: word);
 { Window parameters not changed to tcrtcoord, because the window() procedure
 { Window parameters not changed to tcrtcoord, because the window() procedure
   does nothing if (x1 > x2) or (y1 > y2), and some people may set x2 or y2
   does nothing if (x1 > x2) or (y1 > y2), and some people may set x2 or y2

+ 8 - 8
packages/rtl-console/src/inc/keyboard.inc

@@ -25,7 +25,7 @@ begin
   GetKeyEventFlags := (KeyEvent and $FF000000) shr 24;
   GetKeyEventFlags := (KeyEvent and $FF000000) shr 24;
 end;
 end;
 
 
-function GetKeyEventChar(KeyEvent: TKeyEvent): Char;
+function GetKeyEventChar(KeyEvent: TKeyEvent): AnsiChar;
 begin
 begin
   if KeyEvent and $03000000 = $00000000 then
   if KeyEvent and $03000000 = $00000000 then
     GetKeyEventChar := Chr(KeyEvent and $000000FF)
     GetKeyEventChar := Chr(KeyEvent and $000000FF)
@@ -387,7 +387,7 @@ end;
     KeyEvent to String representation section.
     KeyEvent to String representation section.
   ---------------------------------------------------------------------}
   ---------------------------------------------------------------------}
 
 
-Procedure AddToString (Var S : String; Const A : String);
+Procedure AddToString (Var S : shortstring; Const A : shortstring);
 
 
 begin
 begin
   If Length(S)=0 then
   If Length(S)=0 then
@@ -396,17 +396,17 @@ begin
     S:=S+' '+A;
     S:=S+' '+A;
 end;
 end;
 
 
-Function IntToStr(Int : Longint) : String;
+Function IntToStr(Int : Longint) : shortstring;
 
 
 begin
 begin
   Str(Int,IntToStr);
   Str(Int,IntToStr);
 end;
 end;
 
 
-Function ShiftStateToString(KeyEvent : TKeyEvent; UseLeftRight : Boolean) : String;
+Function ShiftStateToString(KeyEvent : TKeyEvent; UseLeftRight : Boolean) : shortstring;
 
 
 Var
 Var
   S : Integer;
   S : Integer;
-  T : String;
+  T : shortstring;
 
 
 begin
 begin
   S:=GetKeyEventShiftState(KeyEvent);
   S:=GetKeyEventShiftState(KeyEvent);
@@ -428,7 +428,7 @@ begin
   ShiftStateToString:=T;
   ShiftStateToString:=T;
 end;
 end;
 
 
-Function FunctionKeyName (KeyCode : Word) : String;
+Function FunctionKeyName (KeyCode : Word) : shortstring;
 
 
 begin
 begin
   If ((KeyCode-KbdF1)<$1F) Then
   If ((KeyCode-KbdF1)<$1F) Then
@@ -442,10 +442,10 @@ begin
     end;
     end;
 end;
 end;
 
 
-Function KeyEventToString(KeyEvent : TKeyEvent) : String;
+Function KeyEventToString(KeyEvent : TKeyEvent) : shortstring;
 
 
 Var
 Var
-  T : String;
+  T : shortstring;
 
 
 begin
 begin
   T:=ShiftStateToString(KeyEvent,False);
   T:=ShiftStateToString(KeyEvent,False);

+ 11 - 11
packages/rtl-console/src/inc/keybrdh.inc

@@ -38,7 +38,7 @@ type
            bit0-1
            bit0-1
                    0: the lowest two bytes is the translated ASCII value
                    0: the lowest two bytes is the translated ASCII value
                    1: the lowest two bytes is the translated Unicode value
                    1: the lowest two bytes is the translated Unicode value
-                      (wide-char)
+                      (wide-AnsiChar)
                    2: the lowest two bytes is a function key, and the lowest
                    2: the lowest two bytes is a function key, and the lowest
                       two bytes contains its platform independent code
                       two bytes contains its platform independent code
                    3: the lowest two bytes is the physical representation
                    3: the lowest two bytes is the physical representation
@@ -48,7 +48,7 @@ type
            bit3-7  undefined, should be 0
            bit3-7  undefined, should be 0
 
 
 
 
-  If there are two keys returning the same char-code, there's no way to find
+  If there are two keys returning the same AnsiChar-code, there's no way to find
   out which one was pressed (Gray+ and Simple+). If you need to know which
   out which one was pressed (Gray+ and Simple+). If you need to know which
   was pressed, you'll need to use the untranslated keycodes, which is system
   was pressed, you'll need to use the untranslated keycodes, which is system
   dependent. System dependent constants may be defined to cover those, with
   dependent. System dependent constants may be defined to cover those, with
@@ -128,7 +128,7 @@ type
     VirtualKeyCode: Word;    { device-independent identifier of the key }
     VirtualKeyCode: Word;    { device-independent identifier of the key }
     VirtualScanCode: Word;   { device-dependent value, generated by the keyboard }
     VirtualScanCode: Word;   { device-dependent value, generated by the keyboard }
     UnicodeChar: WideChar;   { the translated Unicode character }
     UnicodeChar: WideChar;   { the translated Unicode character }
-    AsciiChar: Char;         { the translated ASCII character }
+    AsciiChar: AnsiChar;         { the translated ASCII character }
     ShiftState: TEnhancedShiftState;
     ShiftState: TEnhancedShiftState;
     Flags: Byte;
     Flags: Byte;
   end;
   end;
@@ -204,10 +204,10 @@ const
   ---------------------------------------------------------------------}
   ---------------------------------------------------------------------}
   SShift       : Array [1..3] of string[5] = ('SHIFT','CTRL','ALT');
   SShift       : Array [1..3] of string[5] = ('SHIFT','CTRL','ALT');
   SLeftRight   : Array [1..2] of string[5] = ('LEFT','RIGHT');
   SLeftRight   : Array [1..2] of string[5] = ('LEFT','RIGHT');
-  SUnicodeChar : String = 'Unicode character ';
-  SScanCode    : String = 'Key with scancode ';
-  SUnknownFunctionKey : String = 'Unknown function key : ';
-  SAnd         : String = 'AND';
+  SUnicodeChar : Shortstring = 'Unicode character ';
+  SScanCode    : Shortstring = 'Key with scancode ';
+  SUnknownFunctionKey : Shortstring = 'Unknown function key : ';
+  SAnd         : Shortstring = 'AND';
   SKeyPad      : Array [0..($FF2F-kbdHome)] of string[6] =
   SKeyPad      : Array [0..($FF2F-kbdHome)] of string[6] =
                  ('Home','Up','PgUp','Left',
                  ('Home','Up','PgUp','Left',
                   'Middle','Right','End','Down',
                   'Middle','Right','End','Down',
@@ -258,7 +258,7 @@ function TranslateKeyEventUniCode(KeyEvent: TKeyEvent): TKeyEvent;
 function GetKeyEventFlags(KeyEvent: TKeyEvent): Byte;
 function GetKeyEventFlags(KeyEvent: TKeyEvent): Byte;
 { Returns the flags part of the given KeyEvent }
 { Returns the flags part of the given KeyEvent }
 
 
-function GetKeyEventChar(KeyEvent: TKeyEvent): Char;
+function GetKeyEventChar(KeyEvent: TKeyEvent): AnsiChar;
 { Returns the charcode part of the given KeyEvent, if it contains a translated
 { Returns the charcode part of the given KeyEvent, if it contains a translated
   keycode }
   keycode }
 
 
@@ -282,12 +282,12 @@ Function SetKeyboardDriver (Const Driver : TKeyboardDriver) : Boolean;
 Procedure GetKeyboardDriver (Var Driver : TKeyboardDriver);
 Procedure GetKeyboardDriver (Var Driver : TKeyboardDriver);
 { Returns the currently active keyboard driver }
 { Returns the currently active keyboard driver }
 
 
-Function ShiftStateToString(KeyEvent : TKeyEvent; UseLeftRight : Boolean) : String;
+Function ShiftStateToString(KeyEvent : TKeyEvent; UseLeftRight : Boolean) : Shortstring;
 { Returns a string representation of a shift state as returned by
 { Returns a string representation of a shift state as returned by
   pollshiftstate }
   pollshiftstate }
-Function FunctionKeyName (KeyCode : Word) : String;
+Function FunctionKeyName (KeyCode : Word) : Shortstring;
 { Returns the name of a function key if the key is one of the special keys . }
 { Returns the name of a function key if the key is one of the special keys . }
-Function KeyEventToString(KeyEvent : TKeyEvent) : String;
+Function KeyEventToString(KeyEvent : TKeyEvent) : Shortstring;
 { Returns a string representation of the pressed key }
 { Returns a string representation of the pressed key }
 
 
 function GetEnhancedKeyEvent: TEnhancedKeyEvent;
 function GetEnhancedKeyEvent: TEnhancedKeyEvent;

+ 1 - 1
packages/rtl-console/src/inc/keyscan.inc

@@ -1,4 +1,4 @@
-{ list of all dos scancode for key giving 0 as char }
+{ list of all dos scancode for key giving 0 as AnsiChar }
 Const
 Const
    kbNoKey       = $00;
    kbNoKey       = $00;
    kbAltEsc      = $01;  {Alt+Esc = scancode 01, ascii code 0.}
    kbAltEsc      = $01;  {Alt+Esc = scancode 01, ascii code 0.}

+ 4 - 4
packages/rtl-console/src/inc/video.inc

@@ -400,9 +400,9 @@ begin
     end;
     end;
 end;
 end;
 
 
-function ExtendedGraphemeCluster2LegacyChar(const EGC: UnicodeString; CodePage: TSystemCodePage): Char;
+function ExtendedGraphemeCluster2LegacyChar(const EGC: UnicodeString; CodePage: TSystemCodePage): AnsiChar;
 
 
-  function GenConvert: Char;
+  function GenConvert: AnsiChar;
     var
     var
       tmpS: RawByteString;
       tmpS: RawByteString;
     begin
     begin
@@ -415,7 +415,7 @@ function ExtendedGraphemeCluster2LegacyChar(const EGC: UnicodeString; CodePage:
     end;
     end;
 
 
 var
 var
-  Ch: Char;
+  Ch: AnsiChar;
 begin
 begin
   if (Length(EGC) = 1) then
   if (Length(EGC) = 1) then
     begin
     begin
@@ -438,7 +438,7 @@ begin
     Result:=GenConvert;
     Result:=GenConvert;
 end;
 end;
 
 
-function LegacyChar2ExtendedGraphemeCluster(const Ch: Char): UnicodeString;
+function LegacyChar2ExtendedGraphemeCluster(const Ch: AnsiChar): UnicodeString;
 var
 var
   tmpS: RawByteString;
   tmpS: RawByteString;
 begin
 begin

+ 6 - 6
packages/rtl-console/src/msdos/crt.pp

@@ -344,7 +344,7 @@ End;
 var
 var
    keyboard_type: byte;  { 0=83/84-key keyboard, $10=101/102+ keyboard }
    keyboard_type: byte;  { 0=83/84-key keyboard, $10=101/102+ keyboard }
    is_last : boolean;
    is_last : boolean;
-   last    : char;
+   last    : AnsiChar;
 
 
 procedure DetectKeyboard;
 procedure DetectKeyboard;
 var
 var
@@ -360,10 +360,10 @@ begin
     end;
     end;
 end;
 end;
 
 
-function readkey : char;
+function readkey : AnsiChar;
 var
 var
-  char2 : char;
-  char1 : char;
+  char2 : AnsiChar;
+  char1 : AnsiChar;
   regs : registers;
   regs : registers;
 begin
 begin
   if is_last then
   if is_last then
@@ -659,7 +659,7 @@ no_snow:
 done:
 done:
 end;
 end;
 
 
-Procedure WriteChar(c:char);
+Procedure WriteChar(c:AnsiChar);
 var
 var
   regs : registers;
   regs : registers;
 begin
 begin
@@ -721,7 +721,7 @@ Procedure CrtRead(Var F: TextRec);
   end;
   end;
 
 
 var
 var
-  ch : Char;
+  ch : AnsiChar;
 Begin
 Begin
   GetScreenCursor(CurrX,CurrY);
   GetScreenCursor(CurrX,CurrY);
   f.bufpos:=0;
   f.bufpos:=0;

+ 2 - 2
packages/rtl-console/src/msdos/vesamode.pp

@@ -23,12 +23,12 @@ unit vesamode;
        dos,video,mouse;
        dos,video,mouse;
 
 
     type
     type
-       PFarChar = ^Char; far;
+       PFarChar = ^AnsiChar; far;
        twordarray = array[0..0] of word;
        twordarray = array[0..0] of word;
 
 
        pwordarray = ^twordarray; far;
        pwordarray = ^twordarray; far;
        TVESAInfoBlock = packed record
        TVESAInfoBlock = packed record
-         VESASignature   : ARRAY[0..3] OF CHAR;
+         VESASignature   : ARRAY[0..3] OF AnsiChar;
          VESAVersion     : WORD;
          VESAVersion     : WORD;
          OEMStringPtr    : PFarChar;
          OEMStringPtr    : PFarChar;
          Capabilities    : LONGINT;
          Capabilities    : LONGINT;

+ 4 - 4
packages/rtl-console/src/netware/crt.pp

@@ -305,9 +305,9 @@ End;
 var
 var
    is_last : boolean;
    is_last : boolean;
 
 
-function readkey : char;
+function readkey : AnsiChar;
 var
 var
-  char1 : char;
+  char1 : AnsiChar;
 begin
 begin
   if is_last then
   if is_last then
   begin
   begin
@@ -449,7 +449,7 @@ end;
 var
 var
   CurrX,CurrY : longint;
   CurrX,CurrY : longint;
 
 
-Procedure WriteChar(c:char);
+Procedure WriteChar(c:AnsiChar);
 var
 var
   w    : word;
   w    : word;
 begin
 begin
@@ -511,7 +511,7 @@ Function CrtRead(Var F: TextRec): Integer;
   end;
   end;
 
 
 var
 var
-  ch : Char;
+  ch : AnsiChar;
 Begin
 Begin
   GetScreenCursor(CurrX,CurrY);
   GetScreenCursor(CurrX,CurrY);
   f.bufpos:=0;
   f.bufpos:=0;

+ 37 - 37
packages/rtl-console/src/netware/nwsys.inc

@@ -48,7 +48,7 @@ TYPE
                  : unsignedshort; (* inherited rights mask *)
                  : unsignedshort; (* inherited rights mask *)
    st_originatingNameSpace
    st_originatingNameSpace
                  : BYTE;          (* namespace of creation       *)
                  : BYTE;          (* namespace of creation       *)
-   st_name       : ARRAY [0..255] OF CHAR;
+   st_name       : ARRAY [0..255] OF AnsiChar;
                                   (* TARGET_NAMESPACE name *)
                                   (* TARGET_NAMESPACE name *)
    st_blksize    : LONGINT;
    st_blksize    : LONGINT;
    st_blocks     : LONGINT;
    st_blocks     : LONGINT;
@@ -56,7 +56,7 @@ TYPE
    st_spare      : ARRAY [0..3] OF LONGINT;
    st_spare      : ARRAY [0..3] OF LONGINT;
   END;
   END;
 
 
-FUNCTION  _stat  (path : PCHAR; VAR buf : NWStatBufT) : LONGINT; CDECL; EXTERNAL Clib NAME 'stat_411';
+FUNCTION  _stat  (path : PAnsiChar; VAR buf : NWStatBufT) : LONGINT; CDECL; EXTERNAL Clib NAME 'stat_411';
 FUNCTION  _fstat (Fileno : LONGINT; VAR buf : NWStatBufT) : LONGINT; CDECL; EXTERNAL CLib NAME 'fstat_411';
 FUNCTION  _fstat (Fileno : LONGINT; VAR buf : NWStatBufT) : LONGINT; CDECL; EXTERNAL CLib NAME 'fstat_411';
 
 
 PROCEDURE NWFree   (P : POINTER); CDECL; EXTERNAL Clib NAME 'free';
 PROCEDURE NWFree   (P : POINTER); CDECL; EXTERNAL Clib NAME 'free';
@@ -75,20 +75,20 @@ procedure _ThreadSwitchWithDelay; cdecl;external ThreadsNlm name 'ThreadSwitchWi
 function _GetThreadName(threadID:longint; var tName):longint; cdecl;external ThreadsNlm name 'GetThreadName';
 function _GetThreadName(threadID:longint; var tName):longint; cdecl;external ThreadsNlm name 'GetThreadName';
 function GetNLMHandle:dword;  cdecl;external ThreadsNlm name 'GetNLMHandle';
 function GetNLMHandle:dword;  cdecl;external ThreadsNlm name 'GetNLMHandle';
 (*
 (*
-PROCEDURE ConsolePrintf (FormatStr : PCHAR; Param : LONGINT); CDecl; EXTERNAL CLib Name 'ConsolePrintf';
-PROCEDURE ConsolePrintf (FormatStr : PCHAR; Param : pchar); CDecl; EXTERNAL CLib Name 'ConsolePrintf';
-PROCEDURE ConsolePrintf (FormatStr : PCHAR; P1,P2 : LONGINT); CDecl; EXTERNAL CLib Name 'ConsolePrintf';
-PROCEDURE ConsolePrintf (FormatStr : PCHAR; P1,P2,P3 : LONGINT); CDecl; EXTERNAL CLib Name 'ConsolePrintf';
-PROCEDURE ConsolePrintf (FormatStr : PCHAR; P1,P2,P3,P4 : LONGINT); CDecl; EXTERNAL CLib Name 'ConsolePrintf';
-PROCEDURE ConsolePrintf (FormatStr : PCHAR); CDecl; EXTERNAL CLib Name 'ConsolePrintf';
+PROCEDURE ConsolePrintf (FormatStr : PAnsiChar; Param : LONGINT); CDecl; EXTERNAL CLib Name 'ConsolePrintf';
+PROCEDURE ConsolePrintf (FormatStr : PAnsiChar; Param : PAnsiChar); CDecl; EXTERNAL CLib Name 'ConsolePrintf';
+PROCEDURE ConsolePrintf (FormatStr : PAnsiChar; P1,P2 : LONGINT); CDecl; EXTERNAL CLib Name 'ConsolePrintf';
+PROCEDURE ConsolePrintf (FormatStr : PAnsiChar; P1,P2,P3 : LONGINT); CDecl; EXTERNAL CLib Name 'ConsolePrintf';
+PROCEDURE ConsolePrintf (FormatStr : PAnsiChar; P1,P2,P3,P4 : LONGINT); CDecl; EXTERNAL CLib Name 'ConsolePrintf';
+PROCEDURE ConsolePrintf (FormatStr : PAnsiChar); CDecl; EXTERNAL CLib Name 'ConsolePrintf';
 *)
 *)
 // this gives internal compiler error 1234124 ??
 // this gives internal compiler error 1234124 ??
-//PROCEDURE ConsolePrintf (FormatStr : PCHAR; Param : array of const); CDecl; EXTERNAL CLib;
+//PROCEDURE ConsolePrintf (FormatStr : PAnsiChar; Param : array of const); CDecl; EXTERNAL CLib;
 
 
-PROCEDURE _printf (FormatStr : PCHAR; Param : LONGINT); CDecl; EXTERNAL CLib;
-PROCEDURE _printf (FormatStr : PCHAR); CDecl; EXTERNAL CLib;
+PROCEDURE _printf (FormatStr : PAnsiChar; Param : LONGINT); CDecl; EXTERNAL CLib;
+PROCEDURE _printf (FormatStr : PAnsiChar); CDecl; EXTERNAL CLib;
 // this gives internet compiler error 1234124 ??
 // this gives internet compiler error 1234124 ??
-// PROCEDURE _printf (FormatStr : PCHAR; Param : array of const); CDecl; EXTERNAL CLib;
+// PROCEDURE _printf (FormatStr : PAnsiChar; Param : array of const); CDecl; EXTERNAL CLib;
 
 
 // values for __action_code used with ExitThread()
 // values for __action_code used with ExitThread()
 CONST
 CONST
@@ -102,7 +102,7 @@ FUNCTION _GetStdOut : POINTER; CDECL; EXTERNAL Clib NAME '__get_stdout';
 FUNCTION _GetStdErr : POINTER; CDECL; EXTERNAL Clib NAME '__get_stderr';
 FUNCTION _GetStdErr : POINTER; CDECL; EXTERNAL Clib NAME '__get_stderr';
 
 
 // FileIO by Fileno
 // FileIO by Fileno
-FUNCTION _open   (FileName : PCHAR; access, mode : LONGINT) : LONGINT; CDECL; EXTERNAL CLib NAME 'open';
+FUNCTION _open   (FileName : PAnsiChar; access, mode : LONGINT) : LONGINT; CDECL; EXTERNAL CLib NAME 'open';
 FUNCTION _close  (FileNo : LONGINT) : LONGINT; CDECL; EXTERNAL CLib NAME 'close';
 FUNCTION _close  (FileNo : LONGINT) : LONGINT; CDECL; EXTERNAL CLib NAME 'close';
 FUNCTION _lseek  (FileNo,Pos,whence :LONGINT) : LONGINT; CDECL; EXTERNAL CLib NAME 'lseek';
 FUNCTION _lseek  (FileNo,Pos,whence :LONGINT) : LONGINT; CDECL; EXTERNAL CLib NAME 'lseek';
 FUNCTION _chsize (FileNo,Pos : LONGINT) : LONGINT; CDECL; EXTERNAL CLib NAME 'chsize';
 FUNCTION _chsize (FileNo,Pos : LONGINT) : LONGINT; CDECL; EXTERNAL CLib NAME 'chsize';
@@ -116,7 +116,7 @@ FUNCTION _unlock (filedes : LONGINT; Offset, Length : Cardinal) : LONGINT; CDECL
 TYPE
 TYPE
   NWModifyStructure =
   NWModifyStructure =
     RECORD
     RECORD
-       MModifyName            : PCHAR;
+       MModifyName            : PAnsiChar;
        MFileAttributes        : LONGINT;
        MFileAttributes        : LONGINT;
        MFileAttributesMask    : LONGINT;
        MFileAttributesMask    : LONGINT;
        MCreateDate            : WORD;
        MCreateDate            : WORD;
@@ -152,11 +152,11 @@ CONST MModifyNameBit                 = $0001;
       MLastUpdatedInSecondsBit       = $4000;
       MLastUpdatedInSecondsBit       = $4000;
 
 
 // Directory
 // Directory
-FUNCTION _chdir  (path : PCHAR) : LONGINT; CDECL; EXTERNAL CLib NAME 'chdir';
-FUNCTION _getcwd (path : PCHAR; pathlen : LONGINT) : PCHAR; CDECL; EXTERNAL CLib NAME 'getcwd';
-FUNCTION _mkdir  (path : PCHAR) : LONGINT; CDECL; EXTERNAL CLib NAME 'mkdir';
-FUNCTION _rmdir  (path : PCHAR) : LONGINT; CDECL; EXTERNAL CLib NAME 'rmdir';
-FUNCTION _ChangeDirectoryEntry (PathName : PCHAR; VAR ModyStruct : NWModifyStructure; ModifyBits, AllowWildcard : LONGINT) : LONGINT; CDECL; EXTERNAL CLib NAME 'ChangeDirectoryEntry';
+FUNCTION _chdir  (path : PAnsiChar) : LONGINT; CDECL; EXTERNAL CLib NAME 'chdir';
+FUNCTION _getcwd (path : PAnsiChar; pathlen : LONGINT) : PAnsiChar; CDECL; EXTERNAL CLib NAME 'getcwd';
+FUNCTION _mkdir  (path : PAnsiChar) : LONGINT; CDECL; EXTERNAL CLib NAME 'mkdir';
+FUNCTION _rmdir  (path : PAnsiChar) : LONGINT; CDECL; EXTERNAL CLib NAME 'rmdir';
+FUNCTION _ChangeDirectoryEntry (PathName : PAnsiChar; VAR ModyStruct : NWModifyStructure; ModifyBits, AllowWildcard : LONGINT) : LONGINT; CDECL; EXTERNAL CLib NAME 'ChangeDirectoryEntry';
 
 
 // get fileno from stream
 // get fileno from stream
 FUNCTION _fileno (Handle : LONGINT) : LONGINT; CDECL; EXTERNAL Clib NAME 'fileno';
 FUNCTION _fileno (Handle : LONGINT) : LONGINT; CDECL; EXTERNAL Clib NAME 'fileno';
@@ -179,8 +179,8 @@ CONST O_RDONLY     = $0000;   (* open for read only *)
 
 
 
 
 // File Utils
 // File Utils
-FUNCTION _unlink (FileName : PCHAR) : LONGINT; CDECL; EXTERNAL CLib NAME 'unlink';
-FUNCTION _rename (oldpath, newpath : PCHAR) : LONGINT; CDECL; EXTERNAL Clib NAME 'rename';
+FUNCTION _unlink (FileName : PAnsiChar) : LONGINT; CDECL; EXTERNAL CLib NAME 'unlink';
+FUNCTION _rename (oldpath, newpath : PAnsiChar) : LONGINT; CDECL; EXTERNAL Clib NAME 'rename';
 
 
 // Error
 // Error
 TYPE _PLONGINT = ^LONGINT;
 TYPE _PLONGINT = ^LONGINT;
@@ -196,7 +196,7 @@ FUNCTION _stackavail : CARDINAL; CDECL; EXTERNAL CLib NAME 'stackavail';
 PROCEDURE _EnterDebugger; CDECL; EXTERNAL Clib NAME 'EnterDebugger';
 PROCEDURE _EnterDebugger; CDECL; EXTERNAL Clib NAME 'EnterDebugger';
 
 
 // String
 // String
-FUNCTION _strlen (P : PCHAR) : LONGINT; CDECL; EXTERNAL Clib NAME 'strlen';
+FUNCTION _strlen (P : PAnsiChar) : LONGINT; CDECL; EXTERNAL Clib NAME 'strlen';
 
 
 // Time/Date
 // Time/Date
 TYPE NWTM = RECORD
 TYPE NWTM = RECORD
@@ -227,7 +227,7 @@ FUNCTION  SetFileServerDateAndTime(year:WORD; month:WORD; day:WORD; hour:WORD; m
                second:WORD):longint;cdecl; EXTERNAL CLib Name 'SetFileServerDateAndTime';
                second:WORD):longint;cdecl; EXTERNAL CLib Name 'SetFileServerDateAndTime';
 
 
 TYPE   FILE_SERV_INFO = record
 TYPE   FILE_SERV_INFO = record
-            serverName              : array[0..47] of char;
+            serverName              : array[0..47] of AnsiChar;
             netwareVersion          : BYTE;
             netwareVersion          : BYTE;
             netwareSubVersion       : BYTE;
             netwareSubVersion       : BYTE;
             maxConnectionsSupported : WORD;
             maxConnectionsSupported : WORD;
@@ -268,29 +268,29 @@ TYPE NWDirEnt =
     d_uid                 : LONGINT;        {owner id (object id) }
     d_uid                 : LONGINT;        {owner id (object id) }
     d_archivedID          : LONGINT;
     d_archivedID          : LONGINT;
     d_updatedID           : LONGINT;
     d_updatedID           : LONGINT;
-    d_nameDOS             : ARRAY [0..12] OF CHAR;
+    d_nameDOS             : ARRAY [0..12] OF AnsiChar;
     d_inheritedRightsMask : WORD;
     d_inheritedRightsMask : WORD;
     d_originatingNameSpace: BYTE;
     d_originatingNameSpace: BYTE;
     d_ddatetime           : time_t;         {deleted date time}
     d_ddatetime           : time_t;         {deleted date time}
     d_deletedID           : LONGINT;
     d_deletedID           : LONGINT;
     {---- new fields starting in v4.11 ----}
     {---- new fields starting in v4.11 ----}
-    d_name                : ARRAY [0..255] OF CHAR;  { enty's namespace name }
+    d_name                : ARRAY [0..255] OF AnsiChar;  { enty's namespace name }
   END;
   END;
   PNWDirEnt = ^NWDirEnt;
   PNWDirEnt = ^NWDirEnt;
 
 
-  FUNCTION _opendir (pathname : PCHAR) : PNWDirEnt; CDECL; EXTERNAL CLib NAME 'opendir_411';
+  FUNCTION _opendir (pathname : PAnsiChar) : PNWDirEnt; CDECL; EXTERNAL CLib NAME 'opendir_411';
   FUNCTION _closedir (dirH : PNWDirEnt) : LONGINT; CDECL; EXTERNAL CLib NAME 'closedir';
   FUNCTION _closedir (dirH : PNWDirEnt) : LONGINT; CDECL; EXTERNAL CLib NAME 'closedir';
   FUNCTION _readdir  (dirH : PNWDirEnt) : PNWDirEnt; CDECL; EXTERNAL CLib NAME 'readdir';
   FUNCTION _readdir  (dirH : PNWDirEnt) : PNWDirEnt; CDECL; EXTERNAL CLib NAME 'readdir';
   FUNCTION _SetReaddirAttribute (dirH : PNWDirEnt; Attribute : LONGINT) : LONGINT; EXTERNAL CLib NAME 'SetReaddirAttribute';
   FUNCTION _SetReaddirAttribute (dirH : PNWDirEnt; Attribute : LONGINT) : LONGINT; EXTERNAL CLib NAME 'SetReaddirAttribute';
 
 
 // Environment
 // Environment
-  FUNCTION _getenv (name : PCHAR) : PCHAR; CDECL; EXTERNAL CLib NAME 'getenv';
+  FUNCTION _getenv (name : PAnsiChar) : PAnsiChar; CDECL; EXTERNAL CLib NAME 'getenv';
 
 
 // Volumes
 // Volumes
-  FUNCTION _GetVolumeName (volumeNumber : LONGINT; volumeName : PCHAR) : LONGINT; CDECL; EXTERNAL CLib NAME 'GetVolumeName';
-  FUNCTION _GetVolumeNumber (volumeName : PCHAR; VAR volumeNumber : LONGINT) : LONGINT; CDECL; EXTERNAL CLib NAME 'GetVolumeNumber';
+  FUNCTION _GetVolumeName (volumeNumber : LONGINT; volumeName : PAnsiChar) : LONGINT; CDECL; EXTERNAL CLib NAME 'GetVolumeName';
+  FUNCTION _GetVolumeNumber (volumeName : PAnsiChar; VAR volumeNumber : LONGINT) : LONGINT; CDECL; EXTERNAL CLib NAME 'GetVolumeNumber';
   FUNCTION _GetVolumeInfoWithNumber (VolumeNumber : BYTE;
   FUNCTION _GetVolumeInfoWithNumber (VolumeNumber : BYTE;
-                                     VolumeName   : PCHAR;
+                                     VolumeName   : PAnsiChar;
                                  VAR TotalBlocks  : WORD;
                                  VAR TotalBlocks  : WORD;
                                  VAR SectorsPerBlock : WORD;
                                  VAR SectorsPerBlock : WORD;
                                  VAR availableBlocks : WORD;
                                  VAR availableBlocks : WORD;
@@ -315,7 +315,7 @@ FUNCTION  _wherex : WORD; CDECL; EXTERNAL CLib NAME 'wherex';
 FUNCTION  _wherey : WORD; CDECL; EXTERNAL CLib NAME 'wherey';
 FUNCTION  _wherey : WORD; CDECL; EXTERNAL CLib NAME 'wherey';
 PROCEDURE _clrscr; CDECL; EXTERNAL CLib NAME 'clrscr';
 PROCEDURE _clrscr; CDECL; EXTERNAL CLib NAME 'clrscr';
 FUNCTION  _kbhit : LONGINT; CDECL; EXTERNAL Clib NAME 'kbhit';
 FUNCTION  _kbhit : LONGINT; CDECL; EXTERNAL Clib NAME 'kbhit';
-FUNCTION  _getch : CHAR; CDECL; EXTERNAL CLib NAME 'getch';
+FUNCTION  _getch : AnsiChar; CDECL; EXTERNAL CLib NAME 'getch';
 PROCEDURE _delay (miliseconds : longint); CDECL; EXTERNAL Clib NAME 'delay';
 PROCEDURE _delay (miliseconds : longint); CDECL; EXTERNAL Clib NAME 'delay';
 FUNCTION  _SetCtrlCharCheckMode (Enabled : BOOLEAN) : BOOLEAN; CDECL; EXTERNAL CLib NAME 'SetCtrlCharCheckMode';
 FUNCTION  _SetCtrlCharCheckMode (Enabled : BOOLEAN) : BOOLEAN; CDECL; EXTERNAL CLib NAME 'SetCtrlCharCheckMode';
 FUNCTION  _SetAutoScreenDestructionMode (Enabled : BOOLEAN) : BOOLEAN; CDECL; EXTERNAL CLib NAME 'SetAutoScreenDestructionMode';
 FUNCTION  _SetAutoScreenDestructionMode (Enabled : BOOLEAN) : BOOLEAN; CDECL; EXTERNAL CLib NAME 'SetAutoScreenDestructionMode';
@@ -348,10 +348,10 @@ CONST
   NW_NS_FTAM    = 3;
   NW_NS_FTAM    = 3;
   NW_NS_LONG    = 4;
   NW_NS_LONG    = 4;
 
 
-function _NWAddSearchPathAtEnd (searchPath : pchar; var number : longint) : longint; cdecl; external Clib name 'NWAddSearchPathAtEnd';
+function _NWAddSearchPathAtEnd (searchPath : PAnsiChar; var number : longint) : longint; cdecl; external Clib name 'NWAddSearchPathAtEnd';
 function _NWDeleteSearchPath (searchPathNumber : longint) : longint; cdecl; external Clib name 'NWDeleteSearchPath';
 function _NWDeleteSearchPath (searchPathNumber : longint) : longint; cdecl; external Clib name 'NWDeleteSearchPath';
-function _NWInsertSearchPath (searchPathNumber : longint; path : pchar) : longint; cdecl; external Clib name 'NWInsertSearchPath';
-function _NWGetSearchPathElement (searchPathNumber : longint; var isDOSSearchPath : longint; searchPath : pchar) : longint; cdecl; external Clib name 'NWGetSearchPathElement';
+function _NWInsertSearchPath (searchPathNumber : longint; path : PAnsiChar) : longint; cdecl; external Clib name 'NWInsertSearchPath';
+function _NWGetSearchPathElement (searchPathNumber : longint; var isDOSSearchPath : longint; searchPath : PAnsiChar) : longint; cdecl; external Clib name 'NWGetSearchPathElement';
 
 
 
 
 // values for __mode used with spawnxx()
 // values for __mode used with spawnxx()
@@ -363,9 +363,9 @@ CONST
    P_SPAWN_IN_CURRENT_DOMAIN = 8;
    P_SPAWN_IN_CURRENT_DOMAIN = 8;
 
 
 
 
-//function spawnlp(mode:longint; path:Pchar; arg0:Pchar; args:array of const):longint;cdecl;external CLib name 'spawnlp';
-function spawnlp(mode:longint; path:Pchar; arg0:Pchar):longint;cdecl;external Clib name 'spawnlp';
-function spawnvp(mode:longint; path:Pchar; argv:PPchar):longint;cdecl;external Clib name 'spawnvp';
+//function spawnlp(mode:longint; path:PAnsiChar; arg0:PAnsiChar; args:array of const):longint;cdecl;external CLib name 'spawnlp';
+function spawnlp(mode:longint; path:PAnsiChar; arg0:PAnsiChar):longint;cdecl;external Clib name 'spawnlp';
+function spawnvp(mode:longint; path:PAnsiChar; argv:PPAnsiChar):longint;cdecl;external Clib name 'spawnvp';
 
 
 
 
 
 

+ 6 - 6
packages/rtl-console/src/netwlibc/crt.pp

@@ -277,7 +277,7 @@ var
    is_last : boolean;
    is_last : boolean;
 
 
 {
 {
-function readkey : char;
+function readkey : AnsiChar;
 var
 var
   keytype,modifier,scancode : longint;
   keytype,modifier,scancode : longint;
 begin
 begin
@@ -297,9 +297,9 @@ begin
 end;
 end;
 }
 }
 
 
-function readkey : char;  // for now
+function readkey : AnsiChar;  // for now
 begin
 begin
-  readkey := char(getcharacter);
+  readkey := AnsiChar(getcharacter);
 end;
 end;
 
 
 
 
@@ -414,8 +414,8 @@ end;
 var
 var
   CurrX,CurrY : longint;
   CurrX,CurrY : longint;
 
 
-Procedure WriteChar(c:char);
-var st : array [0..1] of char;
+Procedure WriteChar(c:AnsiChar);
+var st : array [0..1] of AnsiChar;
 begin
 begin
   case c of
   case c of
    #10 : inc(CurrY);
    #10 : inc(CurrY);
@@ -477,7 +477,7 @@ Function CrtRead(Var F: TextRec): Integer;
   end;
   end;
 
 
 var
 var
-  ch : Char;
+  ch : AnsiChar;
 Begin
 Begin
   GetScreenCursor(CurrX,CurrY);
   GetScreenCursor(CurrX,CurrY);
   f.bufpos:=0;
   f.bufpos:=0;

+ 8 - 8
packages/rtl-console/src/os2/crt.pp

@@ -39,7 +39,7 @@ const
 
 
 type
 type
  TKbdKeyInfo = record
  TKbdKeyInfo = record
-  CharCode, ScanCode: char;
+  CharCode, ScanCode: AnsiChar;
   fbStatus, bNlsShift: byte;
   fbStatus, bNlsShift: byte;
   fsState: word;
   fsState: word;
   Time: longint;
   Time: longint;
@@ -104,7 +104,7 @@ function VioGetCurPos (var Row, Column: word; VioHandle: word): word; cdecl;
                        external 'EMXWRAP' index 109;
                        external 'EMXWRAP' index 109;
 function VioSetCurPos (Row, Column, VioHandle: word): word; cdecl;
 function VioSetCurPos (Row, Column, VioHandle: word): word; cdecl;
                        external 'EMXWRAP' index 115;
                        external 'EMXWRAP' index 115;
-function VioWrtCharStrAtt (S: PChar; Len, Row, Col: longint; var Attr: byte;
+function VioWrtCharStrAtt (S: PAnsiChar; Len, Row, Col: longint; var Attr: byte;
                            VioHandle: word): word; cdecl;
                            VioHandle: word): word; cdecl;
                            external 'EMXWRAP' index 148;
                            external 'EMXWRAP' index 148;
 function VioGetMode (var AModeInfo: VioModeInfo; VioHandle: word): word; cdecl;
 function VioGetMode (var AModeInfo: VioModeInfo; VioHandle: word): word; cdecl;
@@ -219,7 +219,7 @@ begin
 end;
 end;
 
 
 
 
-procedure WriteNormal (C: char; X, Y: dword); inline;
+procedure WriteNormal (C: AnsiChar; X, Y: dword); inline;
 (* Write C to console at X, Y (0-based). *)
 (* Write C to console at X, Y (0-based). *)
 begin
 begin
  VioWrtCharStrAtt (@C, 1, Y, X, TextAttr, VioHandle);
  VioWrtCharStrAtt (@C, 1, Y, X, TextAttr, VioHandle);
@@ -296,22 +296,22 @@ begin
 end;
 end;
 
 
 
 
-function ReadKey: char;
+function ReadKey: AnsiChar;
 {Reads the next character from the keyboard.}
 {Reads the next character from the keyboard.}
 var
 var
  AKeyRec: TKbdKeyInfo;
  AKeyRec: TKbdKeyInfo;
- C, S: char;
+ C, S: AnsiChar;
 begin
 begin
  if SpecialKey then
  if SpecialKey then
   begin
   begin
    SpecialKey := false;
    SpecialKey := false;
-   ReadKey := char (ScanCode);
+   ReadKey := AnsiChar (ScanCode);
    ScanCode := 0;
    ScanCode := 0;
   end
   end
  else
  else
   if ScanCode <> 0 then
   if ScanCode <> 0 then
    begin
    begin
-    ReadKey := char (ScanCode);
+    ReadKey := AnsiChar (ScanCode);
     ScanCode := 0;
     ScanCode := 0;
    end
    end
   else
   else
@@ -334,7 +334,7 @@ begin
      end
      end
     else
     else
      begin
      begin
-      ReadKey := char (ScanCode);
+      ReadKey := AnsiChar (ScanCode);
       ScanCode := 0;
       ScanCode := 0;
      end;
      end;
    end;
    end;

+ 29 - 29
packages/rtl-console/src/unix/crt.pp

@@ -27,7 +27,7 @@ Const
 
 
 Type
 Type
   TCharAttr=packed record
   TCharAttr=packed record
-    ch   : char;
+    ch   : AnsiChar;
     attr : byte;
     attr : byte;
   end;
   end;
   TConsoleBuf=Array[0..ConsoleMaxX*ConsoleMaxY-1] of TCharAttr;
   TConsoleBuf=Array[0..ConsoleMaxX*ConsoleMaxY-1] of TCharAttr;
@@ -53,14 +53,14 @@ Var
 *****************************************************************************}
 *****************************************************************************}
 
 
 {$ifdef debugcrt}
 {$ifdef debugcrt}
-Procedure Debug(Msg : string);
+Procedure Debug(Msg : shortstring);
 
 
 begin
 begin
   Writeln(DebugFile,Msg);
   Writeln(DebugFile,Msg);
 end;
 end;
 {$endif}
 {$endif}
 
 
-Function Str(l:longint):string;
+Function Str(l:longint):shortstring;
 {
 {
   Return a String of the longint
   Return a String of the longint
 }
 }
@@ -102,7 +102,7 @@ end;
                       Optimal AnsiString Conversion Routines
                       Optimal AnsiString Conversion Routines
 *****************************************************************************}
 *****************************************************************************}
 
 
-Function XY2Ansi(x,y,ox,oy:longint):String;
+Function XY2Ansi(x,y,ox,oy:longint):shortstring;
 {
 {
   Returns a string with the escape sequences to go to X,Y on the screen
   Returns a string with the escape sequences to go to X,Y on the screen
 }
 }
@@ -166,7 +166,7 @@ End;
 
 
 const
 const
   AnsiTbl : string[8]='04261537';
   AnsiTbl : string[8]='04261537';
-Function Attr2Ansi(Attr,OAttr:longint):string;
+Function Attr2Ansi(Attr,OAttr:longint):shortstring;
 {
 {
   Convert Attr to an Ansi String, the Optimal code is calculate
   Convert Attr to an Ansi String, the Optimal code is calculate
   with use of the old OAttr
   with use of the old OAttr
@@ -175,7 +175,7 @@ var
   hstr : string[16];
   hstr : string[16];
   OFg,OBg,Fg,Bg : longint;
   OFg,OBg,Fg,Bg : longint;
 
 
-  procedure AddSep(ch:char);
+  procedure AddSep(ch:AnsiChar);
   begin
   begin
     if length(hstr)>0 then
     if length(hstr)>0 then
      hstr:=hstr+';';
      hstr:=hstr+';';
@@ -226,7 +226,7 @@ end;
 
 
 
 
 
 
-Function Ansi2Attr(Const HStr:String;oattr:longint):longint;
+Function Ansi2Attr(Const HStr:shortstring;oattr:longint):longint;
 {
 {
   Convert an Escape sequence to an attribute value, uses Oattr as the last
   Convert an Escape sequence to an attribute value, uses Oattr as the last
   color written
   color written
@@ -276,11 +276,11 @@ const
   InSize=256;
   InSize=256;
   OutSize=1024;
   OutSize=1024;
 var
 var
-  InBuf  : array[0..InSize-1] of char;
+  InBuf  : array[0..InSize-1] of AnsiChar;
   InCnt,
   InCnt,
   InHead,
   InHead,
   InTail : longint;
   InTail : longint;
-  OutBuf : array[0..OutSize-1] of char;
+  OutBuf : array[0..OutSize-1] of AnsiChar;
   OutCnt : longint;
   OutCnt : longint;
 
 
 
 
@@ -305,8 +305,8 @@ begin
 end;
 end;
 
 
 
 
-{Send Char to Remote}
-Procedure ttySendChar(c:char);
+{Send AnsiChar to Remote}
+Procedure ttySendChar(c:AnsiChar);
 Begin
 Begin
   if OutCnt<OutSize then
   if OutCnt<OutSize then
    begin
    begin
@@ -321,7 +321,7 @@ End;
 
 
 
 
 {Send String to Remote}
 {Send String to Remote}
-procedure ttySendStr(const hstr:string);
+procedure ttySendStr(const hstr:shortstring);
 var
 var
   i : longint;
   i : longint;
 begin
 begin
@@ -333,8 +333,8 @@ end;
 
 
 
 
 
 
-{Get Char from Remote}
-function ttyRecvChar:char;
+{Get AnsiChar from Remote}
+function ttyRecvChar:AnsiChar;
 var
 var
   Readed,i : longint;
   Readed,i : longint;
 begin
 begin
@@ -417,7 +417,7 @@ end;
 
 
 
 
 
 
-procedure ttyWrite(const s:string);
+procedure ttyWrite(const s:shortstring);
 {
 {
   Write a string to the output, memory copy and Current X&Y are also updated
   Write a string to the output, memory copy and Current X&Y are also updated
 }
 }
@@ -455,7 +455,7 @@ begin
 end;
 end;
 
 
 
 
-procedure LineWrite(const temp:String);
+procedure LineWrite(const temp:shortstring);
 {
 {
   Write a Line to the screen, doesn't write on 80,25 under Dos
   Write a Line to the screen, doesn't write on 80,25 under Dos
   the Current CurrX is set to WindMax. NO MEMORY UPDATE!
   the Current CurrX is set to WindMax. NO MEMORY UPDATE!
@@ -489,7 +489,7 @@ procedure DoScrollLine(y1,y2,xl,xh:longint);
   Move Line y1 to y2, use only columns Xl-Xh, Memory is updated also
   Move Line y1 to y2, use only columns Xl-Xh, Memory is updated also
 }
 }
 var
 var
-  Temp    : string;
+  Temp    : shortstring;
   idx,
   idx,
   OldAttr,
   OldAttr,
   x,attr  : longint;
   x,attr  : longint;
@@ -778,11 +778,11 @@ End;
 Const
 Const
   KeyBufferSize = 20;
   KeyBufferSize = 20;
 var
 var
-  KeyBuffer : Array[0..KeyBufferSize-1] of Char;
+  KeyBuffer : Array[0..KeyBufferSize-1] of AnsiChar;
   KeyPut,
   KeyPut,
   KeySend   : longint;
   KeySend   : longint;
 
 
-Procedure PushKey(Ch:char);
+Procedure PushKey(Ch:AnsiChar);
 Var
 Var
   Tmp : Longint;
   Tmp : Longint;
 Begin
 Begin
@@ -798,7 +798,7 @@ End;
 
 
 
 
 
 
-Function PopKey:char;
+Function PopKey:AnsiChar;
 Begin
 Begin
   If KeyPut<>KeySend Then
   If KeyPut<>KeySend Then
    Begin
    Begin
@@ -825,7 +825,7 @@ const
   AltKeyStr  : string[38]='qwertyuiopasdfghjklzxcvbnm1234567890-=';
   AltKeyStr  : string[38]='qwertyuiopasdfghjklzxcvbnm1234567890-=';
   AltCodeStr : string[38]=#016#017#018#019#020#021#022#023#024#025#030#031#032#033#034#035#036#037#038+
   AltCodeStr : string[38]=#016#017#018#019#020#021#022#023#024#025#030#031#032#033#034#035#036#037#038+
                           #044#045#046#047#048#049#050#120#121#122#123#124#125#126#127#128#129#130#131;
                           #044#045#046#047#048#049#050#120#121#122#123#124#125#126#127#128#129#130#131;
-Function FAltKey(ch:char):byte;
+Function FAltKey(ch:AnsiChar):byte;
 var
 var
   Idx : longint;
   Idx : longint;
 Begin
 Begin
@@ -858,9 +858,9 @@ Begin
   Keypressed := (KeySend<>KeyPut) or sysKeyPressed;
   Keypressed := (KeySend<>KeyPut) or sysKeyPressed;
 End;
 End;
 
 
-Function ReadKey:char;
+Function ReadKey:AnsiChar;
 Var
 Var
-  ch       : char;
+  ch       : AnsiChar;
   OldState,
   OldState,
   State    : longint;
   State    : longint;
   FDS      : TFDSet;
   FDS      : TFDSet;
@@ -1106,8 +1106,8 @@ end;
 
 
 var
 var
   Lastansi  : boolean;
   Lastansi  : boolean;
-  AnsiCode  : string;
-Procedure DoWrite(const s:String);
+  AnsiCode  : shortstring;
+Procedure DoWrite(const s:shortstring);
 {
 {
   Write string to screen, parse most common AnsiCodes
   Write string to screen, parse most common AnsiCodes
 }
 }
@@ -1118,7 +1118,7 @@ var
   i,j,
   i,j,
   SendBytes : longint;
   SendBytes : longint;
 
 
-  function AnsiPara(var hstr:string):byte;
+  function AnsiPara(var hstr:shortstring):byte;
   var
   var
     k,j  : longint;
     k,j  : longint;
     code : word;
     code : word;
@@ -1252,7 +1252,7 @@ Procedure CrtWrite(Var F: TextRec);
   Top level write function for CRT
   Top level write function for CRT
 }
 }
 Var
 Var
-  Temp : String;
+  Temp : shortstring;
   idx,i : Longint;
   idx,i : Longint;
   oldflush : boolean;
   oldflush : boolean;
 Begin
 Begin
@@ -1279,7 +1279,7 @@ Procedure CrtRead(Var F: TextRec);
   Read from CRT associated file.
   Read from CRT associated file.
 }
 }
 var
 var
-  c : char;
+  c : AnsiChar;
   i : longint;
   i : longint;
 Begin
 Begin
   if isATTY(F.Handle)=1 then
   if isATTY(F.Handle)=1 then
@@ -1530,7 +1530,7 @@ var
   fds    : tfdSet;
   fds    : tfdSet;
   i,j,
   i,j,
   readed : longint;
   readed : longint;
-  buf    : array[0..255] of char;
+  buf    : array[0..255] of AnsiChar;
   s      : string[16];
   s      : string[16];
 begin
 begin
   x:=0;
   x:=0;

+ 362 - 362
packages/rtl-console/src/unix/keyboard.pp

@@ -35,21 +35,21 @@ type
   TTreeElement = record
   TTreeElement = record
     Next,Parent,Child :  PTreeElement;
     Next,Parent,Child :  PTreeElement;
     CanBeTerminal : boolean;
     CanBeTerminal : boolean;
-    char : byte;
+    AnsiChar : byte;
     ScanValue : byte;
     ScanValue : byte;
     CharValue : byte;
     CharValue : byte;
     ShiftValue : TEnhancedShiftState;
     ShiftValue : TEnhancedShiftState;
     SpecialHandler : Tprocedure;
     SpecialHandler : Tprocedure;
   end;
   end;
 
 
-function RawReadKey:char;
-function RawReadString : String;
+function RawReadKey:AnsiChar;
+function RawReadString : ShortString;
 function KeyPressed : Boolean;
 function KeyPressed : Boolean;
-procedure AddSequence(const St : String; AChar,AScan :byte);inline;
-function FindSequence(const St : String;var AChar, Ascan : byte) : boolean;
+procedure AddSequence(const St : ShortString; AChar,AScan :byte);inline;
+function FindSequence(const St : ShortString;var AChar, Ascan : byte) : boolean;
 procedure RestoreStartMode;
 procedure RestoreStartMode;
 
 
-function AddSpecialSequence(const St : string;Proc : Tprocedure) : PTreeElement; platform;
+function AddSpecialSequence(const St : Shortstring;Proc : Tprocedure) : PTreeElement; platform;
 
 
 
 
 {*****************************************************************************}
 {*****************************************************************************}
@@ -86,7 +86,7 @@ var
 const
 const
   InSize=256;
   InSize=256;
 var
 var
-  InBuf  : array [0..InSize-1] of char;
+  InBuf  : array [0..InSize-1] of AnsiChar;
 {  InCnt,}
 {  InCnt,}
   InHead,
   InHead,
   InTail : longint;
   InTail : longint;
@@ -174,7 +174,7 @@ type
   end;
   end;
   kbsentry=packed record
   kbsentry=packed record
     kb_func:byte;
     kb_func:byte;
-    kb_string:array[0..511] of char;
+    kb_string:array[0..511] of AnsiChar;
   end;
   end;
   vt_mode=packed record
   vt_mode=packed record
     mode,          {vt mode}
     mode,          {vt mode}
@@ -405,7 +405,7 @@ begin
 end;
 end;
 {$endif}
 {$endif}
 
 
-function ttyRecvChar:char;
+function ttyRecvChar:AnsiChar;
 
 
 var Readed,i : longint;
 var Readed,i : longint;
 
 
@@ -435,7 +435,7 @@ begin
 end;
 end;
 
 
 { returns an already read character back into InBuf }
 { returns an already read character back into InBuf }
-procedure PutBackIntoInBuf(ch: Char);
+procedure PutBackIntoInBuf(ch: AnsiChar);
 begin
 begin
   If InTail=0 then
   If InTail=0 then
     InTail:=InSize-1
     InTail:=InSize-1
@@ -514,7 +514,7 @@ const
 
 
   procedure GenMouseEvent;
   procedure GenMouseEvent;
   var MouseEvent: TMouseEvent;
   var MouseEvent: TMouseEvent;
-      ch : char;
+      ch : AnsiChar;
       fdsin : tfdSet;
       fdsin : tfdSet;
       buttonval:byte;
       buttonval:byte;
   begin
   begin
@@ -603,10 +603,10 @@ const
         prepared to handle both types of messages }
         prepared to handle both types of messages }
   procedure GenMouseEvent_ExtendedSGR1006;
   procedure GenMouseEvent_ExtendedSGR1006;
   var MouseEvent: TMouseEvent;
   var MouseEvent: TMouseEvent;
-      ch : char;
+      ch : AnsiChar;
       fdsin : tfdSet;
       fdsin : tfdSet;
       buttonval: LongInt;
       buttonval: LongInt;
-      tempstr: string;
+      tempstr: shortstring;
       code: LongInt;
       code: LongInt;
       X, Y: LongInt;
       X, Y: LongInt;
       ButtonMask: Word;
       ButtonMask: Word;
@@ -706,7 +706,7 @@ const
     LastMouseEvent:=MouseEvent;
     LastMouseEvent:=MouseEvent;
   end;
   end;
 
 
-var roottree:array[char] of PTreeElement;
+var roottree:array[AnsiChar] of PTreeElement;
 
 
 procedure FreeElement (PT:PTreeElement);
 procedure FreeElement (PT:PTreeElement);
 var next : PTreeElement;
 var next : PTreeElement;
@@ -722,7 +722,7 @@ end;
 
 
 procedure FreeTree;
 procedure FreeTree;
 
 
-var i:char;
+var i:AnsiChar;
 
 
 begin
 begin
   for i:=low(roottree) to high(roottree) do
   for i:=low(roottree) to high(roottree) do
@@ -735,13 +735,13 @@ end;
 function NewPTree(ch : byte;Pa : PTreeElement) : PTreeElement;
 function NewPTree(ch : byte;Pa : PTreeElement) : PTreeElement;
 begin
 begin
   newPtree:=allocmem(sizeof(Ttreeelement));
   newPtree:=allocmem(sizeof(Ttreeelement));
-  newPtree^.char:=ch;
+  newPtree^.AnsiChar:=ch;
   newPtree^.Parent:=Pa;
   newPtree^.Parent:=Pa;
   if Assigned(Pa) and (Pa^.Child=nil) then
   if Assigned(Pa) and (Pa^.Child=nil) then
     Pa^.Child:=newPtree;
     Pa^.Child:=newPtree;
 end;
 end;
 
 
-function DoAddSequence(const St : String; AChar,AScan :byte; const AShift: TEnhancedShiftState) : PTreeElement;
+function DoAddSequence(const St : shortstring; AChar,AScan :byte; const AShift: TEnhancedShiftState) : PTreeElement;
 var
 var
   CurPTree,NPT : PTreeElement;
   CurPTree,NPT : PTreeElement;
   c : byte;
   c : byte;
@@ -765,13 +765,13 @@ begin
       if NPT=nil then
       if NPT=nil then
         NPT:=NewPTree(c,CurPTree);
         NPT:=NewPTree(c,CurPTree);
       CurPTree:=nil;
       CurPTree:=nil;
-      while assigned(NPT) and (NPT^.char<c) do
+      while assigned(NPT) and (NPT^.AnsiChar<c) do
         begin
         begin
           CurPTree:=NPT;
           CurPTree:=NPT;
           NPT:=NPT^.Next;
           NPT:=NPT^.Next;
         end;
         end;
 
 
-      if assigned(NPT) and (NPT^.char=c) then
+      if assigned(NPT) and (NPT^.AnsiChar=c) then
         CurPTree:=NPT
         CurPTree:=NPT
       else
       else
         begin
         begin
@@ -801,7 +801,7 @@ begin
           if (ScanValue<>AScan) then
           if (ScanValue<>AScan) then
             Writeln(system.stderr,'Scan was ',ScanValue,' now ',AScan);
             Writeln(system.stderr,'Scan was ',ScanValue,' now ',AScan);
           if (CharValue<>AChar) then
           if (CharValue<>AChar) then
-            Writeln(system.stderr,'Char was ',chr(CharValue),' now ',chr(AChar));
+            Writeln(system.stderr,'AnsiChar was ',chr(CharValue),' now ',chr(AChar));
 {$endif DEBUG}
 {$endif DEBUG}
           ScanValue:=AScan;
           ScanValue:=AScan;
           CharValue:=AChar;
           CharValue:=AChar;
@@ -819,26 +819,26 @@ begin
 end;
 end;
 
 
 
 
-procedure AddSequence(const St : String; AChar,AScan :byte);inline;
+procedure AddSequence(const St : shortstring; AChar,AScan :byte);inline;
 begin
 begin
   DoAddSequence(St,AChar,AScan,[]);
   DoAddSequence(St,AChar,AScan,[]);
 end;
 end;
 
 
-{ Returns the Child that as c as char if it exists }
+{ Returns the Child that as c as AnsiChar if it exists }
 function FindChild(c : byte;Root : PTreeElement) : PTreeElement;
 function FindChild(c : byte;Root : PTreeElement) : PTreeElement;
 var
 var
   NPT : PTreeElement;
   NPT : PTreeElement;
 begin
 begin
   NPT:=Root^.Child;
   NPT:=Root^.Child;
-  while assigned(NPT) and (NPT^.char<c) do
+  while assigned(NPT) and (NPT^.AnsiChar<c) do
     NPT:=NPT^.Next;
     NPT:=NPT^.Next;
-  if assigned(NPT) and (NPT^.char=c) then
+  if assigned(NPT) and (NPT^.AnsiChar=c) then
     FindChild:=NPT
     FindChild:=NPT
   else
   else
     FindChild:=nil;
     FindChild:=nil;
 end;
 end;
 
 
-function AddSpecialSequence(const St : string;Proc : Tprocedure) : PTreeElement;
+function AddSpecialSequence(const St : shortstring;Proc : Tprocedure) : PTreeElement;
 var
 var
   NPT : PTreeElement;
   NPT : PTreeElement;
 begin
 begin
@@ -847,7 +847,7 @@ begin
   AddSpecialSequence:=NPT;
   AddSpecialSequence:=NPT;
 end;
 end;
 
 
-function FindSequence(const St : String;var AChar,AScan :byte) : boolean;
+function FindSequence(const St : shortstring;var AChar,AScan :byte) : boolean;
 var
 var
   NPT : PTreeElement;
   NPT : PTreeElement;
   i,p : byte;
   i,p : byte;
@@ -884,136 +884,136 @@ begin
 end;
 end;
 
 
 type  key_sequence=packed record
 type  key_sequence=packed record
-        char:0..127;
+        AnsiChar:0..127;
         scan:byte;
         scan:byte;
         shift:TEnhancedShiftState;
         shift:TEnhancedShiftState;
         st:string[7];
         st:string[7];
       end;
       end;
 
 
 const key_sequences:array[0..302] of key_sequence=(
 const key_sequences:array[0..302] of key_sequence=(
-       (char:0;scan:kbAltA;shift:[essAlt];st:#27'A'),
-       (char:0;scan:kbAltA;shift:[essAlt];st:#27'a'),
-       (char:0;scan:kbAltB;shift:[essAlt];st:#27'B'),
-       (char:0;scan:kbAltB;shift:[essAlt];st:#27'b'),
-       (char:0;scan:kbAltC;shift:[essAlt];st:#27'C'),
-       (char:0;scan:kbAltC;shift:[essAlt];st:#27'c'),
-       (char:0;scan:kbAltD;shift:[essAlt];st:#27'D'),
-       (char:0;scan:kbAltD;shift:[essAlt];st:#27'd'),
-       (char:0;scan:kbAltE;shift:[essAlt];st:#27'E'),
-       (char:0;scan:kbAltE;shift:[essAlt];st:#27'e'),
-       (char:0;scan:kbAltF;shift:[essAlt];st:#27'F'),
-       (char:0;scan:kbAltF;shift:[essAlt];st:#27'f'),
-       (char:0;scan:kbAltG;shift:[essAlt];st:#27'G'),
-       (char:0;scan:kbAltG;shift:[essAlt];st:#27'g'),
-       (char:0;scan:kbAltH;shift:[essAlt];st:#27'H'),
-       (char:0;scan:kbAltH;shift:[essAlt];st:#27'h'),
-       (char:0;scan:kbAltI;shift:[essAlt];st:#27'I'),
-       (char:0;scan:kbAltI;shift:[essAlt];st:#27'i'),
-       (char:0;scan:kbAltJ;shift:[essAlt];st:#27'J'),
-       (char:0;scan:kbAltJ;shift:[essAlt];st:#27'j'),
-       (char:0;scan:kbAltK;shift:[essAlt];st:#27'K'),
-       (char:0;scan:kbAltK;shift:[essAlt];st:#27'k'),
-       (char:0;scan:kbAltL;shift:[essAlt];st:#27'L'),
-       (char:0;scan:kbAltL;shift:[essAlt];st:#27'l'),
-       (char:0;scan:kbAltM;shift:[essAlt];st:#27'M'),
-       (char:0;scan:kbAltM;shift:[essAlt];st:#27'm'),
-       (char:0;scan:kbAltN;shift:[essAlt];st:#27'N'),
-       (char:0;scan:kbAltN;shift:[essAlt];st:#27'n'),
-       (char:0;scan:kbAltO;shift:[essAlt];st:#27'O'),
-       (char:0;scan:kbAltO;shift:[essAlt];st:#27'o'),
-       (char:0;scan:kbAltP;shift:[essAlt];st:#27'P'),
-       (char:0;scan:kbAltP;shift:[essAlt];st:#27'p'),
-       (char:0;scan:kbAltQ;shift:[essAlt];st:#27'Q'),
-       (char:0;scan:kbAltQ;shift:[essAlt];st:#27'q'),
-       (char:0;scan:kbAltR;shift:[essAlt];st:#27'R'),
-       (char:0;scan:kbAltR;shift:[essAlt];st:#27'r'),
-       (char:0;scan:kbAltS;shift:[essAlt];st:#27'S'),
-       (char:0;scan:kbAltS;shift:[essAlt];st:#27's'),
-       (char:0;scan:kbAltT;shift:[essAlt];st:#27'T'),
-       (char:0;scan:kbAltT;shift:[essAlt];st:#27't'),
-       (char:0;scan:kbAltU;shift:[essAlt];st:#27'U'),
-       (char:0;scan:kbAltU;shift:[essAlt];st:#27'u'),
-       (char:0;scan:kbAltV;shift:[essAlt];st:#27'V'),
-       (char:0;scan:kbAltV;shift:[essAlt];st:#27'v'),
-       (char:0;scan:kbAltW;shift:[essAlt];st:#27'W'),
-       (char:0;scan:kbAltW;shift:[essAlt];st:#27'w'),
-       (char:0;scan:kbAltX;shift:[essAlt];st:#27'X'),
-       (char:0;scan:kbAltX;shift:[essAlt];st:#27'x'),
-       (char:0;scan:kbAltY;shift:[essAlt];st:#27'Y'),
-       (char:0;scan:kbAltY;shift:[essAlt];st:#27'y'),
-       (char:0;scan:kbAltZ;shift:[essAlt];st:#27'Z'),
-       (char:0;scan:kbAltZ;shift:[essAlt];st:#27'z'),
-       (char:0;scan:kbAltMinus;shift:[essAlt];st:#27'-'),
-       (char:0;scan:kbAltEqual;shift:[essAlt];st:#27'='),
-       (char:0;scan:kbAlt0;shift:[essAlt];st:#27'0'),
-       (char:0;scan:kbAlt1;shift:[essAlt];st:#27'1'),
-       (char:0;scan:kbAlt2;shift:[essAlt];st:#27'2'),
-       (char:0;scan:kbAlt3;shift:[essAlt];st:#27'3'),
-       (char:0;scan:kbAlt4;shift:[essAlt];st:#27'4'),
-       (char:0;scan:kbAlt5;shift:[essAlt];st:#27'5'),
-       (char:0;scan:kbAlt6;shift:[essAlt];st:#27'6'),
-       (char:0;scan:kbAlt7;shift:[essAlt];st:#27'7'),
-       (char:0;scan:kbAlt8;shift:[essAlt];st:#27'8'),
-       (char:0;scan:kbAlt9;shift:[essAlt];st:#27'9'),
-
-       (char:0;scan:kbF1;shift:[];st:#27'[[A'),                   {linux,konsole,xterm}
-       (char:0;scan:kbF2;shift:[];st:#27'[[B'),                   {linux,konsole,xterm}
-       (char:0;scan:kbF3;shift:[];st:#27'[[C'),                   {linux,konsole,xterm}
-       (char:0;scan:kbF4;shift:[];st:#27'[[D'),                   {linux,konsole,xterm}
-       (char:0;scan:kbF5;shift:[];st:#27'[[E'),                   {linux,konsole}
-       (char:0;scan:kbF1;shift:[];st:#27'[11~'),                  {Eterm,rxvt}
-       (char:0;scan:kbF2;shift:[];st:#27'[12~'),                  {Eterm,rxvt}
-       (char:0;scan:kbF3;shift:[];st:#27'[13~'),                  {Eterm,rxvt}
-       (char:0;scan:kbF4;shift:[];st:#27'[14~'),                  {Eterm,rxvt}
-       (char:0;scan:kbF5;shift:[];st:#27'[15~'),                  {xterm,Eterm,gnome,rxvt}
-       (char:0;scan:kbF6;shift:[];st:#27'[17~'),                  {linux,xterm,Eterm,konsole,gnome,rxvt}
-       (char:0;scan:kbF7;shift:[];st:#27'[18~'),                  {linux,xterm,Eterm,konsole,gnome,rxvt}
-       (char:0;scan:kbF8;shift:[];st:#27'[19~'),                  {linux,xterm,Eterm,konsole,gnome,rxvt}
-       (char:0;scan:kbF9;shift:[];st:#27'[20~'),                  {linux,xterm,Eterm,konsole,gnome,rxvt}
-       (char:0;scan:kbF10;shift:[];st:#27'[21~'),                 {linux,xterm,Eterm,konsole,gnome,rxvt}
-       (char:0;scan:kbF11;shift:[];st:#27'[23~'),                 {linux,xterm,Eterm,konsole,gnome,rxvt}
-       (char:0;scan:kbF12;shift:[];st:#27'[24~'),                 {linux,xterm,Eterm,konsole,gnome,rxvt}
-       (char:0;scan:kbF1;shift:[];st:#27'[M'),                    {FreeBSD}
-       (char:0;scan:kbF2;shift:[];st:#27'[N'),                    {FreeBSD}
-       (char:0;scan:kbF3;shift:[];st:#27'[O'),                    {FreeBSD}
-       (char:0;scan:kbF4;shift:[];st:#27'[P'),                    {FreeBSD}
-       (char:0;scan:kbF5;shift:[];st:#27'[Q'),                    {FreeBSD}
-       (char:0;scan:kbF6;shift:[];st:#27'[R'),                    {FreeBSD}
-       (char:0;scan:kbF7;shift:[];st:#27'[S'),                    {FreeBSD}
-       (char:0;scan:kbF8;shift:[];st:#27'[T'),                    {FreeBSD}
-       (char:0;scan:kbF9;shift:[];st:#27'[U'),                    {FreeBSD}
-       (char:0;scan:kbF10;shift:[];st:#27'[V'),                   {FreeBSD}
-       (char:0;scan:kbF11;shift:[];st:#27'[W'),                   {FreeBSD}
-       (char:0;scan:kbF12;shift:[];st:#27'[X'),                   {FreeBSD}
-       (char:0;scan:kbF1;shift:[];st:#27'OP'),                    {vt100,gnome,konsole}
-       (char:0;scan:kbF2;shift:[];st:#27'OQ'),                    {vt100,gnome,konsole}
-       (char:0;scan:kbF3;shift:[];st:#27'OR'),                    {vt100,gnome,konsole}
-       (char:0;scan:kbF4;shift:[];st:#27'OS'),                    {vt100,gnome,konsole}
-       (char:0;scan:kbF5;shift:[];st:#27'Ot'),                    {vt100}
-       (char:0;scan:kbF6;shift:[];st:#27'Ou'),                    {vt100}
-       (char:0;scan:kbF7;shift:[];st:#27'Ov'),                    {vt100}
-       (char:0;scan:kbF8;shift:[];st:#27'Ol'),                    {vt100}
-       (char:0;scan:kbF9;shift:[];st:#27'Ow'),                    {vt100}
-       (char:0;scan:kbF10;shift:[];st:#27'Ox'),                   {vt100}
-       (char:0;scan:kbF11;shift:[];st:#27'Oy'),                   {vt100}
-       (char:0;scan:kbF12;shift:[];st:#27'Oz'),                   {vt100}
-       (char:27;scan:kbEsc;shift:[];st:#27'[0~'),                 {if linux keyboard patched, escape
+       (AnsiChar:0;scan:kbAltA;shift:[essAlt];st:#27'A'),
+       (AnsiChar:0;scan:kbAltA;shift:[essAlt];st:#27'a'),
+       (AnsiChar:0;scan:kbAltB;shift:[essAlt];st:#27'B'),
+       (AnsiChar:0;scan:kbAltB;shift:[essAlt];st:#27'b'),
+       (AnsiChar:0;scan:kbAltC;shift:[essAlt];st:#27'C'),
+       (AnsiChar:0;scan:kbAltC;shift:[essAlt];st:#27'c'),
+       (AnsiChar:0;scan:kbAltD;shift:[essAlt];st:#27'D'),
+       (AnsiChar:0;scan:kbAltD;shift:[essAlt];st:#27'd'),
+       (AnsiChar:0;scan:kbAltE;shift:[essAlt];st:#27'E'),
+       (AnsiChar:0;scan:kbAltE;shift:[essAlt];st:#27'e'),
+       (AnsiChar:0;scan:kbAltF;shift:[essAlt];st:#27'F'),
+       (AnsiChar:0;scan:kbAltF;shift:[essAlt];st:#27'f'),
+       (AnsiChar:0;scan:kbAltG;shift:[essAlt];st:#27'G'),
+       (AnsiChar:0;scan:kbAltG;shift:[essAlt];st:#27'g'),
+       (AnsiChar:0;scan:kbAltH;shift:[essAlt];st:#27'H'),
+       (AnsiChar:0;scan:kbAltH;shift:[essAlt];st:#27'h'),
+       (AnsiChar:0;scan:kbAltI;shift:[essAlt];st:#27'I'),
+       (AnsiChar:0;scan:kbAltI;shift:[essAlt];st:#27'i'),
+       (AnsiChar:0;scan:kbAltJ;shift:[essAlt];st:#27'J'),
+       (AnsiChar:0;scan:kbAltJ;shift:[essAlt];st:#27'j'),
+       (AnsiChar:0;scan:kbAltK;shift:[essAlt];st:#27'K'),
+       (AnsiChar:0;scan:kbAltK;shift:[essAlt];st:#27'k'),
+       (AnsiChar:0;scan:kbAltL;shift:[essAlt];st:#27'L'),
+       (AnsiChar:0;scan:kbAltL;shift:[essAlt];st:#27'l'),
+       (AnsiChar:0;scan:kbAltM;shift:[essAlt];st:#27'M'),
+       (AnsiChar:0;scan:kbAltM;shift:[essAlt];st:#27'm'),
+       (AnsiChar:0;scan:kbAltN;shift:[essAlt];st:#27'N'),
+       (AnsiChar:0;scan:kbAltN;shift:[essAlt];st:#27'n'),
+       (AnsiChar:0;scan:kbAltO;shift:[essAlt];st:#27'O'),
+       (AnsiChar:0;scan:kbAltO;shift:[essAlt];st:#27'o'),
+       (AnsiChar:0;scan:kbAltP;shift:[essAlt];st:#27'P'),
+       (AnsiChar:0;scan:kbAltP;shift:[essAlt];st:#27'p'),
+       (AnsiChar:0;scan:kbAltQ;shift:[essAlt];st:#27'Q'),
+       (AnsiChar:0;scan:kbAltQ;shift:[essAlt];st:#27'q'),
+       (AnsiChar:0;scan:kbAltR;shift:[essAlt];st:#27'R'),
+       (AnsiChar:0;scan:kbAltR;shift:[essAlt];st:#27'r'),
+       (AnsiChar:0;scan:kbAltS;shift:[essAlt];st:#27'S'),
+       (AnsiChar:0;scan:kbAltS;shift:[essAlt];st:#27's'),
+       (AnsiChar:0;scan:kbAltT;shift:[essAlt];st:#27'T'),
+       (AnsiChar:0;scan:kbAltT;shift:[essAlt];st:#27't'),
+       (AnsiChar:0;scan:kbAltU;shift:[essAlt];st:#27'U'),
+       (AnsiChar:0;scan:kbAltU;shift:[essAlt];st:#27'u'),
+       (AnsiChar:0;scan:kbAltV;shift:[essAlt];st:#27'V'),
+       (AnsiChar:0;scan:kbAltV;shift:[essAlt];st:#27'v'),
+       (AnsiChar:0;scan:kbAltW;shift:[essAlt];st:#27'W'),
+       (AnsiChar:0;scan:kbAltW;shift:[essAlt];st:#27'w'),
+       (AnsiChar:0;scan:kbAltX;shift:[essAlt];st:#27'X'),
+       (AnsiChar:0;scan:kbAltX;shift:[essAlt];st:#27'x'),
+       (AnsiChar:0;scan:kbAltY;shift:[essAlt];st:#27'Y'),
+       (AnsiChar:0;scan:kbAltY;shift:[essAlt];st:#27'y'),
+       (AnsiChar:0;scan:kbAltZ;shift:[essAlt];st:#27'Z'),
+       (AnsiChar:0;scan:kbAltZ;shift:[essAlt];st:#27'z'),
+       (AnsiChar:0;scan:kbAltMinus;shift:[essAlt];st:#27'-'),
+       (AnsiChar:0;scan:kbAltEqual;shift:[essAlt];st:#27'='),
+       (AnsiChar:0;scan:kbAlt0;shift:[essAlt];st:#27'0'),
+       (AnsiChar:0;scan:kbAlt1;shift:[essAlt];st:#27'1'),
+       (AnsiChar:0;scan:kbAlt2;shift:[essAlt];st:#27'2'),
+       (AnsiChar:0;scan:kbAlt3;shift:[essAlt];st:#27'3'),
+       (AnsiChar:0;scan:kbAlt4;shift:[essAlt];st:#27'4'),
+       (AnsiChar:0;scan:kbAlt5;shift:[essAlt];st:#27'5'),
+       (AnsiChar:0;scan:kbAlt6;shift:[essAlt];st:#27'6'),
+       (AnsiChar:0;scan:kbAlt7;shift:[essAlt];st:#27'7'),
+       (AnsiChar:0;scan:kbAlt8;shift:[essAlt];st:#27'8'),
+       (AnsiChar:0;scan:kbAlt9;shift:[essAlt];st:#27'9'),
+
+       (AnsiChar:0;scan:kbF1;shift:[];st:#27'[[A'),                   {linux,konsole,xterm}
+       (AnsiChar:0;scan:kbF2;shift:[];st:#27'[[B'),                   {linux,konsole,xterm}
+       (AnsiChar:0;scan:kbF3;shift:[];st:#27'[[C'),                   {linux,konsole,xterm}
+       (AnsiChar:0;scan:kbF4;shift:[];st:#27'[[D'),                   {linux,konsole,xterm}
+       (AnsiChar:0;scan:kbF5;shift:[];st:#27'[[E'),                   {linux,konsole}
+       (AnsiChar:0;scan:kbF1;shift:[];st:#27'[11~'),                  {Eterm,rxvt}
+       (AnsiChar:0;scan:kbF2;shift:[];st:#27'[12~'),                  {Eterm,rxvt}
+       (AnsiChar:0;scan:kbF3;shift:[];st:#27'[13~'),                  {Eterm,rxvt}
+       (AnsiChar:0;scan:kbF4;shift:[];st:#27'[14~'),                  {Eterm,rxvt}
+       (AnsiChar:0;scan:kbF5;shift:[];st:#27'[15~'),                  {xterm,Eterm,gnome,rxvt}
+       (AnsiChar:0;scan:kbF6;shift:[];st:#27'[17~'),                  {linux,xterm,Eterm,konsole,gnome,rxvt}
+       (AnsiChar:0;scan:kbF7;shift:[];st:#27'[18~'),                  {linux,xterm,Eterm,konsole,gnome,rxvt}
+       (AnsiChar:0;scan:kbF8;shift:[];st:#27'[19~'),                  {linux,xterm,Eterm,konsole,gnome,rxvt}
+       (AnsiChar:0;scan:kbF9;shift:[];st:#27'[20~'),                  {linux,xterm,Eterm,konsole,gnome,rxvt}
+       (AnsiChar:0;scan:kbF10;shift:[];st:#27'[21~'),                 {linux,xterm,Eterm,konsole,gnome,rxvt}
+       (AnsiChar:0;scan:kbF11;shift:[];st:#27'[23~'),                 {linux,xterm,Eterm,konsole,gnome,rxvt}
+       (AnsiChar:0;scan:kbF12;shift:[];st:#27'[24~'),                 {linux,xterm,Eterm,konsole,gnome,rxvt}
+       (AnsiChar:0;scan:kbF1;shift:[];st:#27'[M'),                    {FreeBSD}
+       (AnsiChar:0;scan:kbF2;shift:[];st:#27'[N'),                    {FreeBSD}
+       (AnsiChar:0;scan:kbF3;shift:[];st:#27'[O'),                    {FreeBSD}
+       (AnsiChar:0;scan:kbF4;shift:[];st:#27'[P'),                    {FreeBSD}
+       (AnsiChar:0;scan:kbF5;shift:[];st:#27'[Q'),                    {FreeBSD}
+       (AnsiChar:0;scan:kbF6;shift:[];st:#27'[R'),                    {FreeBSD}
+       (AnsiChar:0;scan:kbF7;shift:[];st:#27'[S'),                    {FreeBSD}
+       (AnsiChar:0;scan:kbF8;shift:[];st:#27'[T'),                    {FreeBSD}
+       (AnsiChar:0;scan:kbF9;shift:[];st:#27'[U'),                    {FreeBSD}
+       (AnsiChar:0;scan:kbF10;shift:[];st:#27'[V'),                   {FreeBSD}
+       (AnsiChar:0;scan:kbF11;shift:[];st:#27'[W'),                   {FreeBSD}
+       (AnsiChar:0;scan:kbF12;shift:[];st:#27'[X'),                   {FreeBSD}
+       (AnsiChar:0;scan:kbF1;shift:[];st:#27'OP'),                    {vt100,gnome,konsole}
+       (AnsiChar:0;scan:kbF2;shift:[];st:#27'OQ'),                    {vt100,gnome,konsole}
+       (AnsiChar:0;scan:kbF3;shift:[];st:#27'OR'),                    {vt100,gnome,konsole}
+       (AnsiChar:0;scan:kbF4;shift:[];st:#27'OS'),                    {vt100,gnome,konsole}
+       (AnsiChar:0;scan:kbF5;shift:[];st:#27'Ot'),                    {vt100}
+       (AnsiChar:0;scan:kbF6;shift:[];st:#27'Ou'),                    {vt100}
+       (AnsiChar:0;scan:kbF7;shift:[];st:#27'Ov'),                    {vt100}
+       (AnsiChar:0;scan:kbF8;shift:[];st:#27'Ol'),                    {vt100}
+       (AnsiChar:0;scan:kbF9;shift:[];st:#27'Ow'),                    {vt100}
+       (AnsiChar:0;scan:kbF10;shift:[];st:#27'Ox'),                   {vt100}
+       (AnsiChar:0;scan:kbF11;shift:[];st:#27'Oy'),                   {vt100}
+       (AnsiChar:0;scan:kbF12;shift:[];st:#27'Oz'),                   {vt100}
+       (AnsiChar:27;scan:kbEsc;shift:[];st:#27'[0~'),                 {if linux keyboard patched, escape
                                                                    returns this}
                                                                    returns this}
-       (char:0;scan:kbIns;shift:[];st:#27'[2~'),                  {linux,Eterm,rxvt}
-       (char:0;scan:kbDel;shift:[];st:#27'[3~'),                  {linux,Eterm,rxvt}
-       (char:0;scan:kbHome;shift:[];st:#27'[1~'),                 {linux}
-       (char:0;scan:kbHome;shift:[];st:#27'[7~'),                 {Eterm,rxvt}
-       (char:0;scan:kbHome;shift:[];st:#27'[H'),                  {FreeBSD}
-       (char:0;scan:kbHome;shift:[];st:#27'OH'),                  {some xterm configurations}
-       (char:0;scan:kbEnd;shift:[];st:#27'[4~'),                  {linux,Eterm}
-       (char:0;scan:kbEnd;shift:[];st:#27'[8~'),                  {rxvt}
-       (char:0;scan:kbEnd;shift:[];st:#27'[F'),                   {FreeBSD}
-       (char:0;scan:kbEnd;shift:[];st:#27'OF'),                   {some xterm configurations}
-       (char:0;scan:kbPgUp;shift:[];st:#27'[5~'),                 {linux,Eterm,rxvt}
-       (char:0;scan:kbPgUp;shift:[];st:#27'[I'),                  {FreeBSD}
-       (char:0;scan:kbPgDn;shift:[];st:#27'[6~'),                 {linux,Eterm,rxvt}
+       (AnsiChar:0;scan:kbIns;shift:[];st:#27'[2~'),                  {linux,Eterm,rxvt}
+       (AnsiChar:0;scan:kbDel;shift:[];st:#27'[3~'),                  {linux,Eterm,rxvt}
+       (AnsiChar:0;scan:kbHome;shift:[];st:#27'[1~'),                 {linux}
+       (AnsiChar:0;scan:kbHome;shift:[];st:#27'[7~'),                 {Eterm,rxvt}
+       (AnsiChar:0;scan:kbHome;shift:[];st:#27'[H'),                  {FreeBSD}
+       (AnsiChar:0;scan:kbHome;shift:[];st:#27'OH'),                  {some xterm configurations}
+       (AnsiChar:0;scan:kbEnd;shift:[];st:#27'[4~'),                  {linux,Eterm}
+       (AnsiChar:0;scan:kbEnd;shift:[];st:#27'[8~'),                  {rxvt}
+       (AnsiChar:0;scan:kbEnd;shift:[];st:#27'[F'),                   {FreeBSD}
+       (AnsiChar:0;scan:kbEnd;shift:[];st:#27'OF'),                   {some xterm configurations}
+       (AnsiChar:0;scan:kbPgUp;shift:[];st:#27'[5~'),                 {linux,Eterm,rxvt}
+       (AnsiChar:0;scan:kbPgUp;shift:[];st:#27'[I'),                  {FreeBSD}
+       (AnsiChar:0;scan:kbPgDn;shift:[];st:#27'[6~'),                 {linux,Eterm,rxvt}
 {$ifdef FREEBSD}
 {$ifdef FREEBSD}
-       (char:0;scan:kbPgDn;shift:[];st:#27'[G'),                  {FreeBSD, conflicts with linux.
+       (AnsiChar:0;scan:kbPgDn;shift:[];st:#27'[G'),                  {FreeBSD, conflicts with linux.
                                                                    Note: new FreeBSD versions seem
                                                                    Note: new FreeBSD versions seem
                                                                    to use xterm-like sequences, so
                                                                    to use xterm-like sequences, so
                                                                    this one is not needed for them.
                                                                    this one is not needed for them.
@@ -1023,220 +1023,220 @@ const key_sequences:array[0..302] of key_sequence=(
                                                                    it'll work over SSH across platforms
                                                                    it'll work over SSH across platforms
                                                                    too.}
                                                                    too.}
 {$else FREEBSD}
 {$else FREEBSD}
-       (char:0;scan:kbCenter;shift:[];st:#27'[G'),                {linux}
+       (AnsiChar:0;scan:kbCenter;shift:[];st:#27'[G'),                {linux}
 {$endif FREEBSD}
 {$endif FREEBSD}
-       (char:0;scan:kbCenter;shift:[];st:#27'[E'),                {xterm,gnome3}
-       (char:0;scan:kbUp;shift:[];st:#27'[A'),                    {linux,FreeBSD,rxvt}
-       (char:0;scan:kbDown;shift:[];st:#27'[B'),                  {linux,FreeBSD,rxvt}
-       (char:0;scan:kbRight;shift:[];st:#27'[C'),                 {linux,FreeBSD,rxvt}
-       (char:0;scan:kbLeft;shift:[];st:#27'[D'),                  {linux,FreeBSD,rxvt}
-       (char:0;scan:kbUp;shift:[];st:#27'OA'),                    {xterm}
-       (char:0;scan:kbDown;shift:[];st:#27'OB'),                  {xterm}
-       (char:0;scan:kbRight;shift:[];st:#27'OC'),                 {xterm}
-       (char:0;scan:kbLeft;shift:[];st:#27'OD'),                  {xterm}
+       (AnsiChar:0;scan:kbCenter;shift:[];st:#27'[E'),                {xterm,gnome3}
+       (AnsiChar:0;scan:kbUp;shift:[];st:#27'[A'),                    {linux,FreeBSD,rxvt}
+       (AnsiChar:0;scan:kbDown;shift:[];st:#27'[B'),                  {linux,FreeBSD,rxvt}
+       (AnsiChar:0;scan:kbRight;shift:[];st:#27'[C'),                 {linux,FreeBSD,rxvt}
+       (AnsiChar:0;scan:kbLeft;shift:[];st:#27'[D'),                  {linux,FreeBSD,rxvt}
+       (AnsiChar:0;scan:kbUp;shift:[];st:#27'OA'),                    {xterm}
+       (AnsiChar:0;scan:kbDown;shift:[];st:#27'OB'),                  {xterm}
+       (AnsiChar:0;scan:kbRight;shift:[];st:#27'OC'),                 {xterm}
+       (AnsiChar:0;scan:kbLeft;shift:[];st:#27'OD'),                  {xterm}
 (* Already recognized above as F11!
 (* Already recognized above as F11!
-       (char:0;scan:kbShiftF1;shift:[essShift];st:#27'[23~'),     {rxvt}
-       (char:0;scan:kbShiftF2;shift:[essShift];st:#27'[24~'),     {rxvt}
+       (AnsiChar:0;scan:kbShiftF1;shift:[essShift];st:#27'[23~'),     {rxvt}
+       (AnsiChar:0;scan:kbShiftF2;shift:[essShift];st:#27'[24~'),     {rxvt}
 *)
 *)
 (* These seem to be shifted. Probably something changed with linux's default keymaps.
 (* These seem to be shifted. Probably something changed with linux's default keymaps.
-       (char:0;scan:kbShiftF3;shift:[essShift];st:#27'[25~'),     {linux,rxvt}
-       (char:0;scan:kbShiftF4;shift:[essShift];st:#27'[26~'),     {linux,rxvt}
-       (char:0;scan:kbShiftF5;shift:[essShift];st:#27'[28~'),     {linux,rxvt}
-       (char:0;scan:kbShiftF6;shift:[essShift];st:#27'[29~'),     {linux,rxvt}
-       (char:0;scan:kbShiftF7;shift:[essShift];st:#27'[31~'),     {linux,rxvt}
-       (char:0;scan:kbShiftF8;shift:[essShift];st:#27'[32~'),     {linux,rxvt}
-       (char:0;scan:kbShiftF9;shift:[essShift];st:#27'[33~'),     {linux,rxvt}
-       (char:0;scan:kbShiftF10;shift:[essShift];st:#27'[34~'),    {linux,rxvt}*)
-       (char:0;scan:kbShiftF1;shift:[essShift];st:#27'[25~'),     {linux}
-       (char:0;scan:kbShiftF2;shift:[essShift];st:#27'[26~'),     {linux}
-       (char:0;scan:kbShiftF3;shift:[essShift];st:#27'[28~'),     {linux}
-       (char:0;scan:kbShiftF4;shift:[essShift];st:#27'[29~'),     {linux}
-       (char:0;scan:kbShiftF5;shift:[essShift];st:#27'[31~'),     {linux}
-       (char:0;scan:kbShiftF6;shift:[essShift];st:#27'[32~'),     {linux}
-       (char:0;scan:kbShiftF7;shift:[essShift];st:#27'[33~'),     {linux}
-       (char:0;scan:kbShiftF8;shift:[essShift];st:#27'[34~'),     {linux}
-       (char:0;scan:kbShiftF11;shift:[essShift];st:#27'[23$'),    {rxvt}
-       (char:0;scan:kbShiftF12;shift:[essShift];st:#27'[24$'),    {rxvt}
-       (char:0;scan:kbShiftF1;shift:[essShift];st:#27'[11;2~'),   {konsole in vt420pc mode}
-       (char:0;scan:kbShiftF2;shift:[essShift];st:#27'[12;2~'),   {konsole in vt420pc mode}
-       (char:0;scan:kbShiftF3;shift:[essShift];st:#27'[13;2~'),   {konsole in vt420pc mode}
-       (char:0;scan:kbShiftF4;shift:[essShift];st:#27'[14;2~'),   {konsole in vt420pc mode}
-       (char:0;scan:kbShiftF5;shift:[essShift];st:#27'[15;2~'),   {xterm}
-       (char:0;scan:kbShiftF6;shift:[essShift];st:#27'[17;2~'),   {xterm}
-       (char:0;scan:kbShiftF7;shift:[essShift];st:#27'[18;2~'),   {xterm}
-       (char:0;scan:kbShiftF8;shift:[essShift];st:#27'[19;2~'),   {xterm}
-       (char:0;scan:kbShiftF9;shift:[essShift];st:#27'[20;2~'),   {xterm}
-       (char:0;scan:kbShiftF10;shift:[essShift];st:#27'[21;2~'),  {xterm}
-       (char:0;scan:kbShiftF11;shift:[essShift];st:#27'[23;2~'),  {xterm}
-       (char:0;scan:kbShiftF12;shift:[essShift];st:#27'[24;2~'),  {xterm}
-       (char:0;scan:kbShiftF1;shift:[essShift];st:#27'O2P'),      {konsole,xterm}
-       (char:0;scan:kbShiftF2;shift:[essShift];st:#27'O2Q'),      {konsole,xterm}
-       (char:0;scan:kbShiftF3;shift:[essShift];st:#27'O2R'),      {konsole,xterm}
-       (char:0;scan:kbShiftF4;shift:[essShift];st:#27'O2S'),      {konsole,xterm}
-       (char:0;scan:kbShiftF1;shift:[essShift];st:#27'[1;2P'),    {xterm,gnome3}
-       (char:0;scan:kbShiftF2;shift:[essShift];st:#27'[1;2Q'),    {xterm,gnome3}
-       (char:0;scan:kbShiftF3;shift:[essShift];st:#27'[1;2R'),    {xterm,gnome3}
-       (char:0;scan:kbShiftF4;shift:[essShift];st:#27'[1;2S'),    {xterm,gnome3}
-       (char:0;scan:kbCtrlF1;shift:[essCtrl];st:#27'O5P'),        {konsole,xterm}
-       (char:0;scan:kbCtrlF2;shift:[essCtrl];st:#27'O5Q'),        {konsole,xterm}
-       (char:0;scan:kbCtrlF3;shift:[essCtrl];st:#27'O5R'),        {konsole,xterm}
-       (char:0;scan:kbCtrlF4;shift:[essCtrl];st:#27'O5S'),        {konsole,xterm}
-       (char:0;scan:kbCtrlF1;shift:[essCtrl];st:#27'[1;5P'),      {xterm,gnome3}
-       (char:0;scan:kbCtrlF2;shift:[essCtrl];st:#27'[1;5Q'),      {xterm,gnome3}
-       (char:0;scan:kbCtrlF3;shift:[essCtrl];st:#27'[1;5R'),      {xterm,gnome3}
-       (char:0;scan:kbCtrlF4;shift:[essCtrl];st:#27'[1;5S'),      {xterm,gnome3}
-       (char:0;scan:kbCtrlF1;shift:[essCtrl];st:#27'[11;5~'),     {none, but expected}
-       (char:0;scan:kbCtrlF2;shift:[essCtrl];st:#27'[12;5~'),     {none, but expected}
-       (char:0;scan:kbCtrlF3;shift:[essCtrl];st:#27'[13;5~'),     {none, but expected}
-       (char:0;scan:kbCtrlF4;shift:[essCtrl];st:#27'[14;5~'),     {none, but expected}
-       (char:0;scan:kbCtrlF5;shift:[essCtrl];st:#27'[15;5~'),     {xterm}
-       (char:0;scan:kbCtrlF6;shift:[essCtrl];st:#27'[17;5~'),     {xterm}
-       (char:0;scan:kbCtrlF7;shift:[essCtrl];st:#27'[18;5~'),     {xterm}
-       (char:0;scan:kbCtrlF8;shift:[essCtrl];st:#27'[19;5~'),     {xterm}
-       (char:0;scan:kbCtrlF9;shift:[essCtrl];st:#27'[20;5~'),     {xterm}
-       (char:0;scan:kbCtrlF10;shift:[essCtrl];st:#27'[21;5~'),    {xterm}
-       (char:0;scan:kbCtrlF11;shift:[essCtrl];st:#27'[23;5~'),    {xterm}
-       (char:0;scan:kbCtrlF12;shift:[essCtrl];st:#27'[24;5~'),    {xterm}
-       (char:0;scan:kbCtrlF1;shift:[essCtrl];st:#27'[11^'),       {rxvt}
-       (char:0;scan:kbCtrlF2;shift:[essCtrl];st:#27'[12^'),       {rxvt}
-       (char:0;scan:kbCtrlF3;shift:[essCtrl];st:#27'[13^'),       {rxvt}
-       (char:0;scan:kbCtrlF4;shift:[essCtrl];st:#27'[14^'),       {rxvt}
-       (char:0;scan:kbCtrlF5;shift:[essCtrl];st:#27'[15^'),       {rxvt}
-       (char:0;scan:kbCtrlF6;shift:[essCtrl];st:#27'[17^'),       {rxvt}
-       (char:0;scan:kbCtrlF7;shift:[essCtrl];st:#27'[18^'),       {rxvt}
-       (char:0;scan:kbCtrlF8;shift:[essCtrl];st:#27'[19^'),       {rxvt}
-       (char:0;scan:kbCtrlF9;shift:[essCtrl];st:#27'[20^'),       {rxvt}
-       (char:0;scan:kbCtrlF10;shift:[essCtrl];st:#27'[21^'),      {rxvt}
-       (char:0;scan:kbCtrlF11;shift:[essCtrl];st:#27'[23^'),      {rxvt}
-       (char:0;scan:kbCtrlF12;shift:[essCtrl];st:#27'[24^'),      {rxvt}
-       (char:0;scan:kbShiftIns;shift:[essShift];st:#27'[2;2~'),   {should be the code, but shift+ins
+       (AnsiChar:0;scan:kbShiftF3;shift:[essShift];st:#27'[25~'),     {linux,rxvt}
+       (AnsiChar:0;scan:kbShiftF4;shift:[essShift];st:#27'[26~'),     {linux,rxvt}
+       (AnsiChar:0;scan:kbShiftF5;shift:[essShift];st:#27'[28~'),     {linux,rxvt}
+       (AnsiChar:0;scan:kbShiftF6;shift:[essShift];st:#27'[29~'),     {linux,rxvt}
+       (AnsiChar:0;scan:kbShiftF7;shift:[essShift];st:#27'[31~'),     {linux,rxvt}
+       (AnsiChar:0;scan:kbShiftF8;shift:[essShift];st:#27'[32~'),     {linux,rxvt}
+       (AnsiChar:0;scan:kbShiftF9;shift:[essShift];st:#27'[33~'),     {linux,rxvt}
+       (AnsiChar:0;scan:kbShiftF10;shift:[essShift];st:#27'[34~'),    {linux,rxvt}*)
+       (AnsiChar:0;scan:kbShiftF1;shift:[essShift];st:#27'[25~'),     {linux}
+       (AnsiChar:0;scan:kbShiftF2;shift:[essShift];st:#27'[26~'),     {linux}
+       (AnsiChar:0;scan:kbShiftF3;shift:[essShift];st:#27'[28~'),     {linux}
+       (AnsiChar:0;scan:kbShiftF4;shift:[essShift];st:#27'[29~'),     {linux}
+       (AnsiChar:0;scan:kbShiftF5;shift:[essShift];st:#27'[31~'),     {linux}
+       (AnsiChar:0;scan:kbShiftF6;shift:[essShift];st:#27'[32~'),     {linux}
+       (AnsiChar:0;scan:kbShiftF7;shift:[essShift];st:#27'[33~'),     {linux}
+       (AnsiChar:0;scan:kbShiftF8;shift:[essShift];st:#27'[34~'),     {linux}
+       (AnsiChar:0;scan:kbShiftF11;shift:[essShift];st:#27'[23$'),    {rxvt}
+       (AnsiChar:0;scan:kbShiftF12;shift:[essShift];st:#27'[24$'),    {rxvt}
+       (AnsiChar:0;scan:kbShiftF1;shift:[essShift];st:#27'[11;2~'),   {konsole in vt420pc mode}
+       (AnsiChar:0;scan:kbShiftF2;shift:[essShift];st:#27'[12;2~'),   {konsole in vt420pc mode}
+       (AnsiChar:0;scan:kbShiftF3;shift:[essShift];st:#27'[13;2~'),   {konsole in vt420pc mode}
+       (AnsiChar:0;scan:kbShiftF4;shift:[essShift];st:#27'[14;2~'),   {konsole in vt420pc mode}
+       (AnsiChar:0;scan:kbShiftF5;shift:[essShift];st:#27'[15;2~'),   {xterm}
+       (AnsiChar:0;scan:kbShiftF6;shift:[essShift];st:#27'[17;2~'),   {xterm}
+       (AnsiChar:0;scan:kbShiftF7;shift:[essShift];st:#27'[18;2~'),   {xterm}
+       (AnsiChar:0;scan:kbShiftF8;shift:[essShift];st:#27'[19;2~'),   {xterm}
+       (AnsiChar:0;scan:kbShiftF9;shift:[essShift];st:#27'[20;2~'),   {xterm}
+       (AnsiChar:0;scan:kbShiftF10;shift:[essShift];st:#27'[21;2~'),  {xterm}
+       (AnsiChar:0;scan:kbShiftF11;shift:[essShift];st:#27'[23;2~'),  {xterm}
+       (AnsiChar:0;scan:kbShiftF12;shift:[essShift];st:#27'[24;2~'),  {xterm}
+       (AnsiChar:0;scan:kbShiftF1;shift:[essShift];st:#27'O2P'),      {konsole,xterm}
+       (AnsiChar:0;scan:kbShiftF2;shift:[essShift];st:#27'O2Q'),      {konsole,xterm}
+       (AnsiChar:0;scan:kbShiftF3;shift:[essShift];st:#27'O2R'),      {konsole,xterm}
+       (AnsiChar:0;scan:kbShiftF4;shift:[essShift];st:#27'O2S'),      {konsole,xterm}
+       (AnsiChar:0;scan:kbShiftF1;shift:[essShift];st:#27'[1;2P'),    {xterm,gnome3}
+       (AnsiChar:0;scan:kbShiftF2;shift:[essShift];st:#27'[1;2Q'),    {xterm,gnome3}
+       (AnsiChar:0;scan:kbShiftF3;shift:[essShift];st:#27'[1;2R'),    {xterm,gnome3}
+       (AnsiChar:0;scan:kbShiftF4;shift:[essShift];st:#27'[1;2S'),    {xterm,gnome3}
+       (AnsiChar:0;scan:kbCtrlF1;shift:[essCtrl];st:#27'O5P'),        {konsole,xterm}
+       (AnsiChar:0;scan:kbCtrlF2;shift:[essCtrl];st:#27'O5Q'),        {konsole,xterm}
+       (AnsiChar:0;scan:kbCtrlF3;shift:[essCtrl];st:#27'O5R'),        {konsole,xterm}
+       (AnsiChar:0;scan:kbCtrlF4;shift:[essCtrl];st:#27'O5S'),        {konsole,xterm}
+       (AnsiChar:0;scan:kbCtrlF1;shift:[essCtrl];st:#27'[1;5P'),      {xterm,gnome3}
+       (AnsiChar:0;scan:kbCtrlF2;shift:[essCtrl];st:#27'[1;5Q'),      {xterm,gnome3}
+       (AnsiChar:0;scan:kbCtrlF3;shift:[essCtrl];st:#27'[1;5R'),      {xterm,gnome3}
+       (AnsiChar:0;scan:kbCtrlF4;shift:[essCtrl];st:#27'[1;5S'),      {xterm,gnome3}
+       (AnsiChar:0;scan:kbCtrlF1;shift:[essCtrl];st:#27'[11;5~'),     {none, but expected}
+       (AnsiChar:0;scan:kbCtrlF2;shift:[essCtrl];st:#27'[12;5~'),     {none, but expected}
+       (AnsiChar:0;scan:kbCtrlF3;shift:[essCtrl];st:#27'[13;5~'),     {none, but expected}
+       (AnsiChar:0;scan:kbCtrlF4;shift:[essCtrl];st:#27'[14;5~'),     {none, but expected}
+       (AnsiChar:0;scan:kbCtrlF5;shift:[essCtrl];st:#27'[15;5~'),     {xterm}
+       (AnsiChar:0;scan:kbCtrlF6;shift:[essCtrl];st:#27'[17;5~'),     {xterm}
+       (AnsiChar:0;scan:kbCtrlF7;shift:[essCtrl];st:#27'[18;5~'),     {xterm}
+       (AnsiChar:0;scan:kbCtrlF8;shift:[essCtrl];st:#27'[19;5~'),     {xterm}
+       (AnsiChar:0;scan:kbCtrlF9;shift:[essCtrl];st:#27'[20;5~'),     {xterm}
+       (AnsiChar:0;scan:kbCtrlF10;shift:[essCtrl];st:#27'[21;5~'),    {xterm}
+       (AnsiChar:0;scan:kbCtrlF11;shift:[essCtrl];st:#27'[23;5~'),    {xterm}
+       (AnsiChar:0;scan:kbCtrlF12;shift:[essCtrl];st:#27'[24;5~'),    {xterm}
+       (AnsiChar:0;scan:kbCtrlF1;shift:[essCtrl];st:#27'[11^'),       {rxvt}
+       (AnsiChar:0;scan:kbCtrlF2;shift:[essCtrl];st:#27'[12^'),       {rxvt}
+       (AnsiChar:0;scan:kbCtrlF3;shift:[essCtrl];st:#27'[13^'),       {rxvt}
+       (AnsiChar:0;scan:kbCtrlF4;shift:[essCtrl];st:#27'[14^'),       {rxvt}
+       (AnsiChar:0;scan:kbCtrlF5;shift:[essCtrl];st:#27'[15^'),       {rxvt}
+       (AnsiChar:0;scan:kbCtrlF6;shift:[essCtrl];st:#27'[17^'),       {rxvt}
+       (AnsiChar:0;scan:kbCtrlF7;shift:[essCtrl];st:#27'[18^'),       {rxvt}
+       (AnsiChar:0;scan:kbCtrlF8;shift:[essCtrl];st:#27'[19^'),       {rxvt}
+       (AnsiChar:0;scan:kbCtrlF9;shift:[essCtrl];st:#27'[20^'),       {rxvt}
+       (AnsiChar:0;scan:kbCtrlF10;shift:[essCtrl];st:#27'[21^'),      {rxvt}
+       (AnsiChar:0;scan:kbCtrlF11;shift:[essCtrl];st:#27'[23^'),      {rxvt}
+       (AnsiChar:0;scan:kbCtrlF12;shift:[essCtrl];st:#27'[24^'),      {rxvt}
+       (AnsiChar:0;scan:kbShiftIns;shift:[essShift];st:#27'[2;2~'),   {should be the code, but shift+ins
                                                                    is paste X clipboard in many
                                                                    is paste X clipboard in many
                                                                    terminal emulators :(}
                                                                    terminal emulators :(}
-       (char:0;scan:kbShiftDel;shift:[essShift];st:#27'[3;2~'),   {xterm,konsole}
-       (char:0;scan:kbCtrlIns;shift:[essCtrl];st:#27'[2;5~'),     {xterm}
-       (char:0;scan:kbCtrlDel;shift:[essCtrl];st:#27'[3;5~'),     {xterm}
-       (char:0;scan:kbShiftDel;shift:[essShift];st:#27'[3$'),     {rxvt}
-       (char:0;scan:kbCtrlIns;shift:[essCtrl];st:#27'[2^'),       {rxvt}
-       (char:0;scan:kbCtrlDel;shift:[essCtrl];st:#27'[3^'),       {rxvt}
-       (char:0;scan:kbAltF1;shift:[essAlt];st:#27#27'[[A'),
-       (char:0;scan:kbAltF2;shift:[essAlt];st:#27#27'[[B'),
-       (char:0;scan:kbAltF3;shift:[essAlt];st:#27#27'[[C'),
-       (char:0;scan:kbAltF4;shift:[essAlt];st:#27#27'[[D'),
-       (char:0;scan:kbAltF5;shift:[essAlt];st:#27#27'[[E'),
-       (char:0;scan:kbAltF1;shift:[essAlt];st:#27#27'[11~'),      {rxvt}
-       (char:0;scan:kbAltF2;shift:[essAlt];st:#27#27'[12~'),      {rxvt}
-       (char:0;scan:kbAltF3;shift:[essAlt];st:#27#27'[13~'),      {rxvt}
-       (char:0;scan:kbAltF4;shift:[essAlt];st:#27#27'[14~'),      {rxvt}
-       (char:0;scan:kbAltF5;shift:[essAlt];st:#27#27'[15~'),      {rxvt}
-       (char:0;scan:kbAltF6;shift:[essAlt];st:#27#27'[17~'),      {rxvt}
-       (char:0;scan:kbAltF7;shift:[essAlt];st:#27#27'[18~'),      {rxvt}
-       (char:0;scan:kbAltF8;shift:[essAlt];st:#27#27'[19~'),      {rxvt}
-       (char:0;scan:kbAltF9;shift:[essAlt];st:#27#27'[20~'),      {rxvt}
-       (char:0;scan:kbAltF10;shift:[essAlt];st:#27#27'[21~'),     {rxvt}
-       (char:0;scan:kbAltF11;shift:[essAlt];st:#27#27'[23~'),     {rxvt}
-       (char:0;scan:kbAltF12;shift:[essAlt];st:#27#27'[24~'),     {rxvt}
-       (char:0;scan:kbAltF1;shift:[essAlt];st:#27#27'OP'),        {xterm}
-       (char:0;scan:kbAltF2;shift:[essAlt];st:#27#27'OQ'),        {xterm}
-       (char:0;scan:kbAltF3;shift:[essAlt];st:#27#27'OR'),        {xterm}
-       (char:0;scan:kbAltF4;shift:[essAlt];st:#27#27'OS'),        {xterm}
-       (char:0;scan:kbAltF5;shift:[essAlt];st:#27#27'Ot'),        {xterm}
-       (char:0;scan:kbAltF6;shift:[essAlt];st:#27#27'Ou'),        {xterm}
-       (char:0;scan:kbAltF7;shift:[essAlt];st:#27#27'Ov'),        {xterm}
-       (char:0;scan:kbAltF8;shift:[essAlt];st:#27#27'Ol'),        {xterm}
-       (char:0;scan:kbAltF9;shift:[essAlt];st:#27#27'Ow'),        {xterm}
-       (char:0;scan:kbAltF10;shift:[essAlt];st:#27#27'Ox'),       {xterm}
-       (char:0;scan:kbAltF11;shift:[essAlt];st:#27#27'Oy'),       {xterm}
-       (char:0;scan:kbAltF12;shift:[essAlt];st:#27#27'Oz'),       {xterm}
-       (char:0;scan:kbAltF1;shift:[essAlt];st:#27'[1;3P'),        {xterm,gnome3}
-       (char:0;scan:kbAltF2;shift:[essAlt];st:#27'[1;3Q'),        {xterm,gnome3}
-       (char:0;scan:kbAltF3;shift:[essAlt];st:#27'[1;3R'),        {xterm,gnome3}
-       (char:0;scan:kbAltF4;shift:[essAlt];st:#27'[1;3S'),        {xterm,gnome3}
-       (char:0;scan:kbAltF1;shift:[essAlt];st:#27'O3P'),          {xterm on FreeBSD}
-       (char:0;scan:kbAltF2;shift:[essAlt];st:#27'O3Q'),          {xterm on FreeBSD}
-       (char:0;scan:kbAltF3;shift:[essAlt];st:#27'O3R'),          {xterm on FreeBSD}
-       (char:0;scan:kbAltF4;shift:[essAlt];st:#27'O3S'),          {xterm on FreeBSD}
-       (char:0;scan:kbAltF5;shift:[essAlt];st:#27'[15;3~'),       {xterm on FreeBSD}
-       (char:0;scan:kbAltF6;shift:[essAlt];st:#27'[17;3~'),       {xterm on FreeBSD}
-       (char:0;scan:kbAltF7;shift:[essAlt];st:#27'[18;3~'),       {xterm on FreeBSD}
-       (char:0;scan:kbAltF8;shift:[essAlt];st:#27'[19;3~'),       {xterm on FreeBSD}
-       (char:0;scan:kbAltF9;shift:[essAlt];st:#27'[20;3~'),       {xterm on FreeBSD}
-       (char:0;scan:kbAltF10;shift:[essAlt];st:#27'[21;3~'),      {xterm on FreeBSD}
-       (char:0;scan:kbAltF11;shift:[essAlt];st:#27'[23;3~'),      {xterm on FreeBSD}
-       (char:0;scan:kbAltF12;shift:[essAlt];st:#27'[24;3~'),      {xterm on FreeBSD}
-
-       (char:0;scan:kbShiftTab;shift:[essShift];st:#27#9),        {linux - 'Meta_Tab'}
-       (char:0;scan:kbShiftTab;shift:[essShift];st:#27'[Z'),
-       (char:0;scan:kbShiftUp;shift:[essShift];st:#27'[1;2A'),    {xterm}
-       (char:0;scan:kbShiftDown;shift:[essShift];st:#27'[1;2B'),  {xterm}
-       (char:0;scan:kbShiftRight;shift:[essShift];st:#27'[1;2C'), {xterm}
-       (char:0;scan:kbShiftLeft;shift:[essShift];st:#27'[1;2D'),  {xterm}
-       (char:0;scan:kbShiftPgUp;shift:[essShift];st:#27'[5;2~'),  {fpterm, xterm-compatible sequence (but xterm uses shift+pgup/pgdn for scrollback)}
-       (char:0;scan:kbShiftPgDn;shift:[essShift];st:#27'[6;2~'),  {fpterm, xterm-compatible sequence (but xterm uses shift+pgup/pgdn for scrollback)}
-       (char:0;scan:kbShiftUp;shift:[essShift];st:#27'[a'),       {rxvt}
-       (char:0;scan:kbShiftDown;shift:[essShift];st:#27'[b'),     {rxvt}
-       (char:0;scan:kbShiftRight;shift:[essShift];st:#27'[c'),    {rxvt}
-       (char:0;scan:kbShiftLeft;shift:[essShift];st:#27'[d'),     {rxvt}
-       (char:0;scan:kbShiftEnd;shift:[essShift];st:#27'[1;2F'),   {xterm}
-       (char:0;scan:kbShiftEnd;shift:[essShift];st:#27'[8$'),     {rxvt}
-       (char:0;scan:kbShiftHome;shift:[essShift];st:#27'[1;2H'),  {xterm}
-       (char:0;scan:kbShiftHome;shift:[essShift];st:#27'[7$'),    {rxvt}
-
-       (char:0;scan:KbCtrlShiftUp;shift:[essCtrl,essShift];st:#27'[1;6A'),    {xterm}
-       (char:0;scan:KbCtrlShiftDown;shift:[essCtrl,essShift];st:#27'[1;6B'),  {xterm}
-       (char:0;scan:KbCtrlShiftRight;shift:[essCtrl,essShift];st:#27'[1;6C'), {xterm, xfce4}
-       (char:0;scan:KbCtrlShiftLeft;shift:[essCtrl,essShift];st:#27'[1;6D'),  {xterm, xfce4}
-       (char:0;scan:KbCtrlShiftHome;shift:[essCtrl,essShift];st:#27'[1;6H'),  {xterm}
-       (char:0;scan:KbCtrlShiftEnd;shift:[essCtrl,essShift];st:#27'[1;6F'),   {xterm}
-       (char:0;scan:kbCtrlShiftPgUp;shift:[essCtrl,essShift];st:#27'[5;6~'),  {fpterm, xterm-compatible sequence (but xterm uses shift+pgup/pgdn for scrollback)}
-       (char:0;scan:kbCtrlShiftPgDn;shift:[essCtrl,essShift];st:#27'[6;6~'),  {fpterm, xterm-compatible sequence (but xterm uses shift+pgup/pgdn for scrollback)}
-
-       (char:0;scan:kbCtrlPgDn;shift:[essCtrl];st:#27'[6;5~'),    {xterm}
-       (char:0;scan:kbCtrlPgUp;shift:[essCtrl];st:#27'[5;5~'),    {xterm}
-       (char:0;scan:kbCtrlUp;shift:[essCtrl];st:#27'[1;5A'),      {xterm}
-       (char:0;scan:kbCtrlDown;shift:[essCtrl];st:#27'[1;5B'),    {xterm}
-       (char:0;scan:kbCtrlRight;shift:[essCtrl];st:#27'[1;5C'),   {xterm}
-       (char:0;scan:kbCtrlLeft;shift:[essCtrl];st:#27'[1;5D'),    {xterm}
-       (char:0;scan:kbCtrlUp;shift:[essCtrl];st:#27'[Oa'),        {rxvt}
-       (char:0;scan:kbCtrlDown;shift:[essCtrl];st:#27'[Ob'),      {rxvt}
-       (char:0;scan:kbCtrlRight;shift:[essCtrl];st:#27'[Oc'),     {rxvt}
-       (char:0;scan:kbCtrlLeft;shift:[essCtrl];st:#27'[Od'),      {rxvt}
-       (char:0;scan:kbCtrlEnd;shift:[essCtrl];st:#27'[1;5F'),     {xterm}
-       (char:0;scan:kbCtrlEnd;shift:[essCtrl];st:#27'[8^'),       {rxvt}
-       (char:0;scan:kbCtrlHome;shift:[essCtrl];st:#27'[1;5H'),    {xterm}
-       (char:0;scan:kbCtrlHome;shift:[essCtrl];st:#27'[7^'),      {rxvt}
-
-       (char:0;scan:kbAltUp;shift:[essAlt];st:#27#27'[A'),        {rxvt}
-       (char:0;scan:kbAltDown;shift:[essAlt];st:#27#27'[B'),      {rxvt}
-       (char:0;scan:kbAltLeft;shift:[essAlt];st:#27#27'[D'),      {rxvt}
-       (char:0;scan:kbAltRight;shift:[essAlt];st:#27#27'[C'),     {rxvt}
+       (AnsiChar:0;scan:kbShiftDel;shift:[essShift];st:#27'[3;2~'),   {xterm,konsole}
+       (AnsiChar:0;scan:kbCtrlIns;shift:[essCtrl];st:#27'[2;5~'),     {xterm}
+       (AnsiChar:0;scan:kbCtrlDel;shift:[essCtrl];st:#27'[3;5~'),     {xterm}
+       (AnsiChar:0;scan:kbShiftDel;shift:[essShift];st:#27'[3$'),     {rxvt}
+       (AnsiChar:0;scan:kbCtrlIns;shift:[essCtrl];st:#27'[2^'),       {rxvt}
+       (AnsiChar:0;scan:kbCtrlDel;shift:[essCtrl];st:#27'[3^'),       {rxvt}
+       (AnsiChar:0;scan:kbAltF1;shift:[essAlt];st:#27#27'[[A'),
+       (AnsiChar:0;scan:kbAltF2;shift:[essAlt];st:#27#27'[[B'),
+       (AnsiChar:0;scan:kbAltF3;shift:[essAlt];st:#27#27'[[C'),
+       (AnsiChar:0;scan:kbAltF4;shift:[essAlt];st:#27#27'[[D'),
+       (AnsiChar:0;scan:kbAltF5;shift:[essAlt];st:#27#27'[[E'),
+       (AnsiChar:0;scan:kbAltF1;shift:[essAlt];st:#27#27'[11~'),      {rxvt}
+       (AnsiChar:0;scan:kbAltF2;shift:[essAlt];st:#27#27'[12~'),      {rxvt}
+       (AnsiChar:0;scan:kbAltF3;shift:[essAlt];st:#27#27'[13~'),      {rxvt}
+       (AnsiChar:0;scan:kbAltF4;shift:[essAlt];st:#27#27'[14~'),      {rxvt}
+       (AnsiChar:0;scan:kbAltF5;shift:[essAlt];st:#27#27'[15~'),      {rxvt}
+       (AnsiChar:0;scan:kbAltF6;shift:[essAlt];st:#27#27'[17~'),      {rxvt}
+       (AnsiChar:0;scan:kbAltF7;shift:[essAlt];st:#27#27'[18~'),      {rxvt}
+       (AnsiChar:0;scan:kbAltF8;shift:[essAlt];st:#27#27'[19~'),      {rxvt}
+       (AnsiChar:0;scan:kbAltF9;shift:[essAlt];st:#27#27'[20~'),      {rxvt}
+       (AnsiChar:0;scan:kbAltF10;shift:[essAlt];st:#27#27'[21~'),     {rxvt}
+       (AnsiChar:0;scan:kbAltF11;shift:[essAlt];st:#27#27'[23~'),     {rxvt}
+       (AnsiChar:0;scan:kbAltF12;shift:[essAlt];st:#27#27'[24~'),     {rxvt}
+       (AnsiChar:0;scan:kbAltF1;shift:[essAlt];st:#27#27'OP'),        {xterm}
+       (AnsiChar:0;scan:kbAltF2;shift:[essAlt];st:#27#27'OQ'),        {xterm}
+       (AnsiChar:0;scan:kbAltF3;shift:[essAlt];st:#27#27'OR'),        {xterm}
+       (AnsiChar:0;scan:kbAltF4;shift:[essAlt];st:#27#27'OS'),        {xterm}
+       (AnsiChar:0;scan:kbAltF5;shift:[essAlt];st:#27#27'Ot'),        {xterm}
+       (AnsiChar:0;scan:kbAltF6;shift:[essAlt];st:#27#27'Ou'),        {xterm}
+       (AnsiChar:0;scan:kbAltF7;shift:[essAlt];st:#27#27'Ov'),        {xterm}
+       (AnsiChar:0;scan:kbAltF8;shift:[essAlt];st:#27#27'Ol'),        {xterm}
+       (AnsiChar:0;scan:kbAltF9;shift:[essAlt];st:#27#27'Ow'),        {xterm}
+       (AnsiChar:0;scan:kbAltF10;shift:[essAlt];st:#27#27'Ox'),       {xterm}
+       (AnsiChar:0;scan:kbAltF11;shift:[essAlt];st:#27#27'Oy'),       {xterm}
+       (AnsiChar:0;scan:kbAltF12;shift:[essAlt];st:#27#27'Oz'),       {xterm}
+       (AnsiChar:0;scan:kbAltF1;shift:[essAlt];st:#27'[1;3P'),        {xterm,gnome3}
+       (AnsiChar:0;scan:kbAltF2;shift:[essAlt];st:#27'[1;3Q'),        {xterm,gnome3}
+       (AnsiChar:0;scan:kbAltF3;shift:[essAlt];st:#27'[1;3R'),        {xterm,gnome3}
+       (AnsiChar:0;scan:kbAltF4;shift:[essAlt];st:#27'[1;3S'),        {xterm,gnome3}
+       (AnsiChar:0;scan:kbAltF1;shift:[essAlt];st:#27'O3P'),          {xterm on FreeBSD}
+       (AnsiChar:0;scan:kbAltF2;shift:[essAlt];st:#27'O3Q'),          {xterm on FreeBSD}
+       (AnsiChar:0;scan:kbAltF3;shift:[essAlt];st:#27'O3R'),          {xterm on FreeBSD}
+       (AnsiChar:0;scan:kbAltF4;shift:[essAlt];st:#27'O3S'),          {xterm on FreeBSD}
+       (AnsiChar:0;scan:kbAltF5;shift:[essAlt];st:#27'[15;3~'),       {xterm on FreeBSD}
+       (AnsiChar:0;scan:kbAltF6;shift:[essAlt];st:#27'[17;3~'),       {xterm on FreeBSD}
+       (AnsiChar:0;scan:kbAltF7;shift:[essAlt];st:#27'[18;3~'),       {xterm on FreeBSD}
+       (AnsiChar:0;scan:kbAltF8;shift:[essAlt];st:#27'[19;3~'),       {xterm on FreeBSD}
+       (AnsiChar:0;scan:kbAltF9;shift:[essAlt];st:#27'[20;3~'),       {xterm on FreeBSD}
+       (AnsiChar:0;scan:kbAltF10;shift:[essAlt];st:#27'[21;3~'),      {xterm on FreeBSD}
+       (AnsiChar:0;scan:kbAltF11;shift:[essAlt];st:#27'[23;3~'),      {xterm on FreeBSD}
+       (AnsiChar:0;scan:kbAltF12;shift:[essAlt];st:#27'[24;3~'),      {xterm on FreeBSD}
+
+       (AnsiChar:0;scan:kbShiftTab;shift:[essShift];st:#27#9),        {linux - 'Meta_Tab'}
+       (AnsiChar:0;scan:kbShiftTab;shift:[essShift];st:#27'[Z'),
+       (AnsiChar:0;scan:kbShiftUp;shift:[essShift];st:#27'[1;2A'),    {xterm}
+       (AnsiChar:0;scan:kbShiftDown;shift:[essShift];st:#27'[1;2B'),  {xterm}
+       (AnsiChar:0;scan:kbShiftRight;shift:[essShift];st:#27'[1;2C'), {xterm}
+       (AnsiChar:0;scan:kbShiftLeft;shift:[essShift];st:#27'[1;2D'),  {xterm}
+       (AnsiChar:0;scan:kbShiftPgUp;shift:[essShift];st:#27'[5;2~'),  {fpterm, xterm-compatible sequence (but xterm uses shift+pgup/pgdn for scrollback)}
+       (AnsiChar:0;scan:kbShiftPgDn;shift:[essShift];st:#27'[6;2~'),  {fpterm, xterm-compatible sequence (but xterm uses shift+pgup/pgdn for scrollback)}
+       (AnsiChar:0;scan:kbShiftUp;shift:[essShift];st:#27'[a'),       {rxvt}
+       (AnsiChar:0;scan:kbShiftDown;shift:[essShift];st:#27'[b'),     {rxvt}
+       (AnsiChar:0;scan:kbShiftRight;shift:[essShift];st:#27'[c'),    {rxvt}
+       (AnsiChar:0;scan:kbShiftLeft;shift:[essShift];st:#27'[d'),     {rxvt}
+       (AnsiChar:0;scan:kbShiftEnd;shift:[essShift];st:#27'[1;2F'),   {xterm}
+       (AnsiChar:0;scan:kbShiftEnd;shift:[essShift];st:#27'[8$'),     {rxvt}
+       (AnsiChar:0;scan:kbShiftHome;shift:[essShift];st:#27'[1;2H'),  {xterm}
+       (AnsiChar:0;scan:kbShiftHome;shift:[essShift];st:#27'[7$'),    {rxvt}
+
+       (AnsiChar:0;scan:KbCtrlShiftUp;shift:[essCtrl,essShift];st:#27'[1;6A'),    {xterm}
+       (AnsiChar:0;scan:KbCtrlShiftDown;shift:[essCtrl,essShift];st:#27'[1;6B'),  {xterm}
+       (AnsiChar:0;scan:KbCtrlShiftRight;shift:[essCtrl,essShift];st:#27'[1;6C'), {xterm, xfce4}
+       (AnsiChar:0;scan:KbCtrlShiftLeft;shift:[essCtrl,essShift];st:#27'[1;6D'),  {xterm, xfce4}
+       (AnsiChar:0;scan:KbCtrlShiftHome;shift:[essCtrl,essShift];st:#27'[1;6H'),  {xterm}
+       (AnsiChar:0;scan:KbCtrlShiftEnd;shift:[essCtrl,essShift];st:#27'[1;6F'),   {xterm}
+       (AnsiChar:0;scan:kbCtrlShiftPgUp;shift:[essCtrl,essShift];st:#27'[5;6~'),  {fpterm, xterm-compatible sequence (but xterm uses shift+pgup/pgdn for scrollback)}
+       (AnsiChar:0;scan:kbCtrlShiftPgDn;shift:[essCtrl,essShift];st:#27'[6;6~'),  {fpterm, xterm-compatible sequence (but xterm uses shift+pgup/pgdn for scrollback)}
+
+       (AnsiChar:0;scan:kbCtrlPgDn;shift:[essCtrl];st:#27'[6;5~'),    {xterm}
+       (AnsiChar:0;scan:kbCtrlPgUp;shift:[essCtrl];st:#27'[5;5~'),    {xterm}
+       (AnsiChar:0;scan:kbCtrlUp;shift:[essCtrl];st:#27'[1;5A'),      {xterm}
+       (AnsiChar:0;scan:kbCtrlDown;shift:[essCtrl];st:#27'[1;5B'),    {xterm}
+       (AnsiChar:0;scan:kbCtrlRight;shift:[essCtrl];st:#27'[1;5C'),   {xterm}
+       (AnsiChar:0;scan:kbCtrlLeft;shift:[essCtrl];st:#27'[1;5D'),    {xterm}
+       (AnsiChar:0;scan:kbCtrlUp;shift:[essCtrl];st:#27'[Oa'),        {rxvt}
+       (AnsiChar:0;scan:kbCtrlDown;shift:[essCtrl];st:#27'[Ob'),      {rxvt}
+       (AnsiChar:0;scan:kbCtrlRight;shift:[essCtrl];st:#27'[Oc'),     {rxvt}
+       (AnsiChar:0;scan:kbCtrlLeft;shift:[essCtrl];st:#27'[Od'),      {rxvt}
+       (AnsiChar:0;scan:kbCtrlEnd;shift:[essCtrl];st:#27'[1;5F'),     {xterm}
+       (AnsiChar:0;scan:kbCtrlEnd;shift:[essCtrl];st:#27'[8^'),       {rxvt}
+       (AnsiChar:0;scan:kbCtrlHome;shift:[essCtrl];st:#27'[1;5H'),    {xterm}
+       (AnsiChar:0;scan:kbCtrlHome;shift:[essCtrl];st:#27'[7^'),      {rxvt}
+
+       (AnsiChar:0;scan:kbAltUp;shift:[essAlt];st:#27#27'[A'),        {rxvt}
+       (AnsiChar:0;scan:kbAltDown;shift:[essAlt];st:#27#27'[B'),      {rxvt}
+       (AnsiChar:0;scan:kbAltLeft;shift:[essAlt];st:#27#27'[D'),      {rxvt}
+       (AnsiChar:0;scan:kbAltRight;shift:[essAlt];st:#27#27'[C'),     {rxvt}
 {$ifdef HAIKU}
 {$ifdef HAIKU}
-       (char:0;scan:kbAltUp;shift:[essAlt];st:#27#27'OA'),
-       (char:0;scan:kbAltDown;shift:[essAlt];st:#27#27'OB'),
-       (char:0;scan:kbAltRight;shift:[essAlt];st:#27#27'OC'),
+       (AnsiChar:0;scan:kbAltUp;shift:[essAlt];st:#27#27'OA'),
+       (AnsiChar:0;scan:kbAltDown;shift:[essAlt];st:#27#27'OB'),
+       (AnsiChar:0;scan:kbAltRight;shift:[essAlt];st:#27#27'OC'),
 {$else}
 {$else}
-       (char:0;scan:kbAltUp;shift:[essAlt];st:#27'OA'),
-       (char:0;scan:kbAltDown;shift:[essAlt];st:#27'OB'),
-       (char:0;scan:kbAltRight;shift:[essAlt];st:#27'OC'),
+       (AnsiChar:0;scan:kbAltUp;shift:[essAlt];st:#27'OA'),
+       (AnsiChar:0;scan:kbAltDown;shift:[essAlt];st:#27'OB'),
+       (AnsiChar:0;scan:kbAltRight;shift:[essAlt];st:#27'OC'),
 {$endif}
 {$endif}
-       (char:0;scan:kbAltLeft;shift:[essAlt];st:#27#27'OD'),
-       (char:0;scan:kbAltPgUp;shift:[essAlt];st:#27#27'[5~'),     {rxvt}
-       (char:0;scan:kbAltPgDn;shift:[essAlt];st:#27#27'[6~'),     {rxvt}
-       (char:0;scan:kbAltEnd;shift:[essAlt];st:#27#27'[4~'),
-       (char:0;scan:kbAltEnd;shift:[essAlt];st:#27#27'[8~'),      {rxvt}
-       (char:0;scan:kbAltHome;shift:[essAlt];st:#27#27'[1~'),
-       (char:0;scan:kbAltHome;shift:[essAlt];st:#27#27'[7~'),     {rxvt}
-       (char:0;scan:kbAltIns;shift:[essAlt];st:#27#27'[2~'),      {rxvt}
-       (char:0;scan:kbAltDel;shift:[essAlt];st:#27#27'[3~'),      {rxvt}
+       (AnsiChar:0;scan:kbAltLeft;shift:[essAlt];st:#27#27'OD'),
+       (AnsiChar:0;scan:kbAltPgUp;shift:[essAlt];st:#27#27'[5~'),     {rxvt}
+       (AnsiChar:0;scan:kbAltPgDn;shift:[essAlt];st:#27#27'[6~'),     {rxvt}
+       (AnsiChar:0;scan:kbAltEnd;shift:[essAlt];st:#27#27'[4~'),
+       (AnsiChar:0;scan:kbAltEnd;shift:[essAlt];st:#27#27'[8~'),      {rxvt}
+       (AnsiChar:0;scan:kbAltHome;shift:[essAlt];st:#27#27'[1~'),
+       (AnsiChar:0;scan:kbAltHome;shift:[essAlt];st:#27#27'[7~'),     {rxvt}
+       (AnsiChar:0;scan:kbAltIns;shift:[essAlt];st:#27#27'[2~'),      {rxvt}
+       (AnsiChar:0;scan:kbAltDel;shift:[essAlt];st:#27#27'[3~'),      {rxvt}
 
 
   { xterm default values }
   { xterm default values }
   { xterm alternate default values }
   { xterm alternate default values }
   { ignored sequences }
   { ignored sequences }
-       (char:0;scan:0;shift:[];st:#27'[?1;0c'),
-       (char:0;scan:0;shift:[];st:#27'[?1l'),
-       (char:0;scan:0;shift:[];st:#27'[?1h'),
-       (char:0;scan:0;shift:[];st:#27'[?1;2c'),
-       (char:0;scan:0;shift:[];st:#27'[?7l'),
-       (char:0;scan:0;shift:[];st:#27'[?7h')
+       (AnsiChar:0;scan:0;shift:[];st:#27'[?1;0c'),
+       (AnsiChar:0;scan:0;shift:[];st:#27'[?1l'),
+       (AnsiChar:0;scan:0;shift:[];st:#27'[?1h'),
+       (AnsiChar:0;scan:0;shift:[];st:#27'[?1;2c'),
+       (AnsiChar:0;scan:0;shift:[];st:#27'[?7l'),
+       (AnsiChar:0;scan:0;shift:[];st:#27'[?7h')
       );
       );
 
 
 procedure LoadDefaultSequences;
 procedure LoadDefaultSequences;
@@ -1261,10 +1261,10 @@ begin
   { all Esc letter }
   { all Esc letter }
   for i:=low(key_sequences) to high(key_sequences) do
   for i:=low(key_sequences) to high(key_sequences) do
     with key_sequences[i] do
     with key_sequences[i] do
-      DoAddSequence(st,char,scan,shift);
+      DoAddSequence(st,AnsiChar,scan,shift);
 end;
 end;
 
 
-function RawReadKey:char;
+function RawReadKey:AnsiChar;
 var
 var
   fdsin    : tfdSet;
   fdsin    : tfdSet;
 begin
 begin
@@ -1285,11 +1285,11 @@ begin
 end;
 end;
 
 
 
 
-function RawReadString : String;
+function RawReadString : shortstring;
 var
 var
-  ch : char;
+  ch : AnsiChar;
   fdsin : tfdSet;
   fdsin : tfdSet;
-  St : String;
+  St : shortstring;
 begin
 begin
   St:=RawReadKey;
   St:=RawReadKey;
   fpFD_ZERO (fdsin);
   fpFD_ZERO (fdsin);
@@ -1372,7 +1372,7 @@ procedure force_linuxtty;
 
 
 var s:string[15];
 var s:string[15];
     handle:sizeint;
     handle:sizeint;
-    thistty:string;
+    thistty:shortstring;
 
 
 begin
 begin
   is_console:=false;
   is_console:=false;
@@ -1404,7 +1404,7 @@ end;
 {$endif linux}
 {$endif linux}
 
 
 
 
-function DetectUtf8ByteSequenceStart(ch: Char): LongInt;
+function DetectUtf8ByteSequenceStart(ch: AnsiChar): LongInt;
 begin
 begin
   if Ord(ch)<128 then
   if Ord(ch)<128 then
     DetectUtf8ByteSequenceStart:=1
     DetectUtf8ByteSequenceStart:=1
@@ -1419,7 +1419,7 @@ begin
 end;
 end;
 
 
 
 
-function IsValidUtf8ContinuationByte(ch: Char): Boolean;
+function IsValidUtf8ContinuationByte(ch: AnsiChar): Boolean;
 begin
 begin
   IsValidUtf8ContinuationByte:=(Ord(ch) and %11000000)=%10000000;
   IsValidUtf8ContinuationByte:=(Ord(ch) and %11000000)=%10000000;
 end;
 end;
@@ -1429,7 +1429,7 @@ function ReadKey:TEnhancedKeyEvent;
 const
 const
   ReplacementAsciiChar='?';
   ReplacementAsciiChar='?';
 var
 var
-  store    : array [0..8] of char;
+  store    : array [0..8] of AnsiChar;
   arrayind : byte;
   arrayind : byte;
   SState: TEnhancedShiftState;
   SState: TEnhancedShiftState;
 
 
@@ -1450,7 +1450,7 @@ var
         end;
         end;
       end;
       end;
 
 
-    function ReadUtf8(ch: Char): LongInt;
+    function ReadUtf8(ch: AnsiChar): LongInt;
       const
       const
         ErrorCharacter = $FFFD; { U+FFFD = REPLACEMENT CHARACTER }
         ErrorCharacter = $FFFD; { U+FFFD = REPLACEMENT CHARACTER }
       var
       var
@@ -1503,7 +1503,7 @@ var
       end;
       end;
 
 
 var
 var
-  ch       : char;
+  ch       : AnsiChar;
   fdsin    : tfdSet;
   fdsin    : tfdSet;
   NPT,NNPT : PTreeElement;
   NPT,NNPT : PTreeElement;
   k: TEnhancedKeyEvent;
   k: TEnhancedKeyEvent;
@@ -1601,7 +1601,7 @@ begin
              End
              End
            else
            else
              begin
              begin
-               { Put that unused char back into InBuf? }
+               { Put that unused AnsiChar back into InBuf? }
                if ch<>#0 then
                if ch<>#0 then
                  PutBackIntoInBuf(ch);
                  PutBackIntoInBuf(ch);
                break;
                break;
@@ -1763,7 +1763,7 @@ const
 
 
 var
 var
   MyScan:byte;
   MyScan:byte;
-  MyChar : char;
+  MyChar : AnsiChar;
   MyUniChar: WideChar;
   MyUniChar: WideChar;
   MyKey: TEnhancedKeyEvent;
   MyKey: TEnhancedKeyEvent;
   EscUsed,AltPrefixUsed,CtrlPrefixUsed,ShiftPrefixUsed,Again : boolean;
   EscUsed,AltPrefixUsed,CtrlPrefixUsed,ShiftPrefixUsed,Again : boolean;

+ 1 - 1
packages/rtl-console/src/unix/mouse.pp

@@ -157,7 +157,7 @@ const mouse_terminals:array[0..6] of string[7]=('cons','eterm','gnome',
       xterm=6;
       xterm=6;
       mouse_1003_capable=[xterm]; {xterm only for now}
       mouse_1003_capable=[xterm]; {xterm only for now}
 
 
-var term:string;
+var term:shortstring;
     i,t:shortint;
     i,t:shortint;
 
 
 begin
 begin

+ 37 - 37
packages/rtl-console/src/unix/terminfo.pp

@@ -544,18 +544,18 @@ type
   TermIOS = record
   TermIOS = record
     c_iflag, c_oflag, c_cflag, c_lflag: TCFlag_t;
     c_iflag, c_oflag, c_cflag, c_lflag: TCFlag_t;
     c_line: Byte;
     c_line: Byte;
-    c_cc: array [0..NCCS-1] of Char;
+    c_cc: array [0..NCCS-1] of AnsiChar;
     c_ispeed, c_ospeed: Speed_t;
     c_ispeed, c_ospeed: Speed_t;
     Pad: word;
     Pad: word;
   end;
   end;
 
 
   TT_BoolArray = array [0..BoolCount - 1] of Boolean;
   TT_BoolArray = array [0..BoolCount - 1] of Boolean;
   TT_WordArray = array [0..NumCount - 1] of Word;
   TT_WordArray = array [0..NumCount - 1] of Word;
-  TT_PCharArray = array [0..StrCount - 1] of PChar;
+  TT_PCharArray = array [0..StrCount - 1] of PAnsiChar;
 
 
   TermType4 = record
   TermType4 = record
-    Term_Names: PChar;
-    Str_Table: PChar;
+    Term_Names: PAnsiChar;
+    Str_Table: PAnsiChar;
     Booleans: TT_BoolArray;
     Booleans: TT_BoolArray;
     Numbers: TT_WordArray;
     Numbers: TT_WordArray;
     Strings: TT_PCharArray;
     Strings: TT_PCharArray;
@@ -570,8 +570,8 @@ type
   end;
   end;
 
 
   TermType5 = record
   TermType5 = record
-    Term_Names: PChar;
-    Str_Table: PChar;
+    Term_Names: PAnsiChar;
+    Str_Table: PAnsiChar;
     Booleans: ^TT_BoolArray;
     Booleans: ^TT_BoolArray;
     Numbers: ^TT_WordArray;
     Numbers: ^TT_WordArray;
     Strings: ^TT_PCharArray;
     Strings: ^TT_PCharArray;
@@ -587,8 +587,8 @@ type
 
 
   TerminalCommon_ptr1 = ^TerminalCommon1;
   TerminalCommon_ptr1 = ^TerminalCommon1;
   TerminalCommon1 = record
   TerminalCommon1 = record
-    Term_Names: PChar;
-    Str_Table: PChar;
+    Term_Names: PAnsiChar;
+    Str_Table: PAnsiChar;
   end;
   end;
 
 
   TerminalCommon_ptr2 = ^TerminalCommon2;
   TerminalCommon_ptr2 = ^TerminalCommon2;
@@ -598,7 +598,7 @@ type
     Pad: longint;
     Pad: longint;
   end;
   end;
 
 
-  WriterFunc = function (P: PChar): Longint;
+  WriterFunc = function (P: PAnsiChar): Longint;
 
 
 var
 var
 {$ifndef darwin}
 {$ifndef darwin}
@@ -627,21 +627,21 @@ procedure use_env(B: Longint); cdecl; external curseslib name 'use_env';
 function putp(Ndx: Longint): Longint;
 function putp(Ndx: Longint): Longint;
 
 
 { this function must be called before any terminal properties are accessed }
 { this function must be called before any terminal properties are accessed }
-function setupterm(Term: PChar; fd: Longint; var ErrCode: Longint): Longint;
+function setupterm(Term: PAnsiChar; fd: Longint; var ErrCode: Longint): Longint;
 
 
 { reinitialize lib }
 { reinitialize lib }
-function restartterm(Term: PChar; fd: Longint; var ErrCode: Longint): Longint; cdecl; external curseslib name 'restartterm';
-
-{function tgetent(P1, P2: PChar): Longint;
-function tgetflag(P: PChar): Longint;
-function tgetnum(P: PChar): Longint;
-function tgoto(P: PChar; L1, L2: Longint): PChar;
-function tgetstr(P: PChar; var R: PChar): PChar;
-function tigetflag(P: PChar): Longint;
-function tigetnum(P: PChar): Longint;
-function tigetstr(P: PChar): PChar;
-function tparm(P: PChar, ...): PChar;
-function tparam(const char *, char *, int, ...): PChar;}
+function restartterm(Term: PAnsiChar; fd: Longint; var ErrCode: Longint): Longint; cdecl; external curseslib name 'restartterm';
+
+{function tgetent(P1, P2: PAnsiChar): Longint;
+function tgetflag(P: PAnsiChar): Longint;
+function tgetnum(P: PAnsiChar): Longint;
+function tgoto(P: PAnsiChar; L1, L2: Longint): PAnsiChar;
+function tgetstr(P: PAnsiChar; var R: PAnsiChar): PAnsiChar;
+function tigetflag(P: PAnsiChar): Longint;
+function tigetnum(P: PAnsiChar): Longint;
+function tigetstr(P: PAnsiChar): PAnsiChar;
+function tparm(P: PAnsiChar, ...): PAnsiChar;
+function tparam(const AnsiChar *, AnsiChar *, int, ...): PAnsiChar;}
 function tputs(Ndx: Word; L1: Longint; F: WriterFunc): Longint;
 function tputs(Ndx: Word; L1: Longint; F: WriterFunc): Longint;
 
 
 implementation
 implementation
@@ -651,7 +651,7 @@ uses
 
 
 function putp(Ndx: Longint): Longint;
 function putp(Ndx: Longint): Longint;
 var
 var
-  P: PChar;
+  P: PAnsiChar;
 begin
 begin
   if not assigned(cur_term) then
   if not assigned(cur_term) then
     RunError(219);
     RunError(219);
@@ -661,7 +661,7 @@ end;
 
 
 function tputs(Ndx: Word; L1: Longint; F: WriterFunc): Longint;
 function tputs(Ndx: Word; L1: Longint; F: WriterFunc): Longint;
 var
 var
-  P: PChar;
+  P: PAnsiChar;
 begin
 begin
   if not assigned(cur_term) then
   if not assigned(cur_term) then
     RunError(219);
     RunError(219);
@@ -672,11 +672,11 @@ end;
 
 
 //function set_curterm(term: TerminalCommon_ptr1): TerminalCommon_ptr1; cdecl; external curseslib;
 //function set_curterm(term: TerminalCommon_ptr1): TerminalCommon_ptr1; cdecl; external curseslib;
 
 
-// function restartterm(Term: PChar; fd: Longint; var ErrCode: Longint): Longint; cdecl; external curseslib;
+// function restartterm(Term: PAnsiChar; fd: Longint; var ErrCode: Longint): Longint; cdecl; external curseslib;
 
 
-function setuptermC(Term: PChar; fd: Longint; var ErrCode: Longint): Longint; cdecl; external curseslib name 'setupterm';
+function setuptermC(Term: PAnsiChar; fd: Longint; var ErrCode: Longint): Longint; cdecl; external curseslib name 'setupterm';
 
 
-function setupterm(Term: PChar; fd: Longint; var ErrCode: Longint): Longint;
+function setupterm(Term: PAnsiChar; fd: Longint; var ErrCode: Longint): Longint;
 var
 var
   versioncheck: longint;
   versioncheck: longint;
 begin
 begin
@@ -730,15 +730,15 @@ begin
     cur_term_valid := false;
     cur_term_valid := false;
 end;
 end;
 
 
-{function tgetent(P1, P2: PChar): Longint; cdecl; external;
-function tgetflag(P: PChar): Longint; cdecl; external;
-function tgetnum(P: PChar): Longint; cdecl; external;
-function tgoto(P: PChar; L1, L2: Longint): PChar; cdecl; external;
-function tgetstr(P: PChar; var R: PChar): PChar; cdecl; external;
-function tigetflag(P: PChar): Longint; cdecl; external;
-function tigetnum(P: PChar): Longint; cdecl; external;
-function tigetstr(P: PChar): PChar; cdecl; external;
-function tparm(P: PChar; ...): PChar; cdecl; external;
-function tparam(const char *, char *, int, ...): PChar; cdecl; external;}
+{function tgetent(P1, P2: PAnsiChar): Longint; cdecl; external;
+function tgetflag(P: PAnsiChar): Longint; cdecl; external;
+function tgetnum(P: PAnsiChar): Longint; cdecl; external;
+function tgoto(P: PAnsiChar; L1, L2: Longint): PAnsiChar; cdecl; external;
+function tgetstr(P: PAnsiChar; var R: PAnsiChar): PAnsiChar; cdecl; external;
+function tigetflag(P: PAnsiChar): Longint; cdecl; external;
+function tigetnum(P: PAnsiChar): Longint; cdecl; external;
+function tigetstr(P: PAnsiChar): PAnsiChar; cdecl; external;
+function tparm(P: PAnsiChar; ...): PAnsiChar; cdecl; external;
+function tparam(const AnsiChar *, AnsiChar *, int, ...): PAnsiChar; cdecl; external;}
 
 
 end.
 end.

+ 1 - 1
packages/rtl-console/src/unix/unixkvmbase.pp

@@ -37,7 +37,7 @@ end;
 {$else}
 {$else}
 function UTF8Enabled: Boolean;
 function UTF8Enabled: Boolean;
 var
 var
-  lang:string;
+  lang:shortstring;
 begin
 begin
 {$ifdef OpenBSD}
 {$ifdef OpenBSD}
   lang:=upcase(fpgetenv('LC_CTYPE'));
   lang:=upcase(fpgetenv('LC_CTYPE'));

+ 30 - 30
packages/rtl-console/src/unix/video.pp

@@ -60,7 +60,7 @@ type  Tconsole_type=(ttyNetwork
         exit_am_mode,
         exit_am_mode,
         ena_acs
         ena_acs
       );
       );
-      Ttermcodes=array[Ttermcode] of Pchar;
+      Ttermcodes=array[Ttermcode] of PAnsiChar;
       Ptermcodes=^Ttermcodes;
       Ptermcodes=^Ttermcodes;
 
 
 const term_codes_ansi:Ttermcodes=
 const term_codes_ansi:Ttermcodes=
@@ -199,9 +199,9 @@ var
   f: file;
   f: file;
 
 
 const
 const
-  logstart: string = '';
-  nl: char = #10;
-  logend: string = #10#10;
+  logstart: shortstring = '';
+  nl: AnsiChar = #10;
+  logend: shortstring = #10#10;
 {$endif logging}
 {$endif logging}
 
 
 {$ifdef cpui386}
 {$ifdef cpui386}
@@ -211,8 +211,8 @@ const
 const
 const
 
 
 {  can_delete_term : boolean = false;}
 {  can_delete_term : boolean = false;}
-  ACSIn : string = '';
-  ACSOut : string = '';
+  ACSIn : shortstring = '';
+  ACSOut : shortstring = '';
   in_ACS : boolean =false;
   in_ACS : boolean =false;
 
 
   TerminalSupportsHighIntensityColors: boolean = false;
   TerminalSupportsHighIntensityColors: boolean = false;
@@ -231,7 +231,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-function Unicode2DecSpecialGraphics(Ch: WideChar): Char;
+function Unicode2DecSpecialGraphics(Ch: WideChar): AnsiChar;
 begin
 begin
   case Ch of
   case Ch of
     #$25C6:
     #$25C6:
@@ -301,7 +301,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-function convert_vga_to_acs(ch:char):word;
+function convert_vga_to_acs(ch:AnsiChar):word;
 
 
 {Ch contains a character in the VGA character set (i.e. codepage 437).
 {Ch contains a character in the VGA character set (i.e. codepage 437).
  This routine tries to convert some VGA symbols as well as possible to the
  This routine tries to convert some VGA symbols as well as possible to the
@@ -359,7 +359,7 @@ end;
 
 
 procedure SendEscapeSeqNdx(ndx:Ttermcode);
 procedure SendEscapeSeqNdx(ndx:Ttermcode);
 
 
-var p:PChar;
+var p:PAnsiChar;
 
 
 begin
 begin
 { Always true because of vt100 default.
 { Always true because of vt100 default.
@@ -371,20 +371,20 @@ begin
 end;
 end;
 
 
 
 
-procedure SendEscapeSeq(const S: String);
+procedure SendEscapeSeq(const S: shortstring);
 begin
 begin
   fpWrite(stdoutputhandle, S[1], Length(S));
   fpWrite(stdoutputhandle, S[1], Length(S));
 end;
 end;
 
 
 
 
-function IntStr(l:longint):string;
+function IntStr(l:longint):shortstring;
 
 
 begin
 begin
   Str(l,intstr);
   Str(l,intstr);
 end;
 end;
 
 
 
 
-Function XY2Ansi(x,y,ox,oy:longint):String;
+Function XY2Ansi(x,y,ox,oy:longint):shortstring;
 {
 {
   Returns a string with the escape sequences to go to X,Y on the screen.
   Returns a string with the escape sequences to go to X,Y on the screen.
 
 
@@ -394,7 +394,7 @@ Function XY2Ansi(x,y,ox,oy:longint):String;
 }
 }
 
 
 var delta:longint;
 var delta:longint;
-    direction:char;
+    direction:AnsiChar;
     movement:string[32];
     movement:string[32];
 
 
 begin
 begin
@@ -417,12 +417,12 @@ begin
         exit;
         exit;
       end;
       end;
      delta:=ox-x;
      delta:=ox-x;
-     direction:=char(byte('C')+byte(x<=ox));
+     direction:=AnsiChar(byte('C')+byte(x<=ox));
    end;
    end;
   if x=ox then
   if x=ox then
    begin
    begin
      delta:=oy-y;
      delta:=oy-y;
-     direction:=char(byte('A')+byte(y>oy));
+     direction:=AnsiChar(byte('A')+byte(y>oy));
    end;
    end;
 
 
   if direction='H' then
   if direction='H' then
@@ -433,11 +433,11 @@ begin
   xy2ansi:=#27'['+movement+direction;
   xy2ansi:=#27'['+movement+direction;
 end;
 end;
 
 
-const  ansitbl:array[0..7] of char='04261537';
+const  ansitbl:array[0..7] of AnsiChar='04261537';
 
 
-function attr2ansi(Fg,Bg:byte;Attr:TEnhancedVideoAttributes;OFg,OBg:byte;OAttr:TEnhancedVideoAttributes):string;
+function attr2ansi(Fg,Bg:byte;Attr:TEnhancedVideoAttributes;OFg,OBg:byte;OAttr:TEnhancedVideoAttributes):shortstring;
 const
 const
-  AttrOnOffStr: array [TEnhancedVideoAttribute, Boolean] of string = (
+  AttrOnOffStr: array [TEnhancedVideoAttribute, Boolean] of shortstring = (
     ('22;','1;'),
     ('22;','1;'),
     ('22;','2;'),
     ('22;','2;'),
     ('23;','3;'),
     ('23;','3;'),
@@ -449,7 +449,7 @@ const
     ('29;','9;'),
     ('29;','9;'),
     ('24;','21;'));
     ('24;','21;'));
 var
 var
-  tmpS: string;
+  tmpS: shortstring;
   A: TEnhancedVideoAttribute;
   A: TEnhancedVideoAttribute;
 begin
 begin
   attr2ansi:=#27'[';
   attr2ansi:=#27'[';
@@ -531,7 +531,7 @@ end;
 
 
 procedure UpdateTTY(Force:boolean);
 procedure UpdateTTY(Force:boolean);
 var
 var
-  outbuf   : array[0..1023+255] of char;
+  outbuf   : array[0..1023+255] of AnsiChar;
   chattr   : tenhancedvideocell;
   chattr   : tenhancedvideocell;
   skipped  : boolean;
   skipped  : boolean;
   outptr,
   outptr,
@@ -550,7 +550,7 @@ var
 
 
   function transform(const hstr:UnicodeString):RawByteString;
   function transform(const hstr:UnicodeString):RawByteString;
   var
   var
-    DecSpecialGraphicsCharacter: Char;
+    DecSpecialGraphicsCharacter: AnsiChar;
   begin
   begin
     if external_codepage=CP_UTF8 then
     if external_codepage=CP_UTF8 then
       result:=Utf8Encode(hstr)
       result:=Utf8Encode(hstr)
@@ -649,9 +649,9 @@ var
   end;
   end;
 
 
 (*
 (*
-function GetTermString(ndx:Ttermcode):String;
+function GetTermString(ndx:Ttermcode):shortstring;
 var
 var
-   P{,pdelay}: PChar;
+   P{,pdelay}: PAnsiChar;
 begin
 begin
   GetTermString:='';
   GetTermString:='';
   if not assigned(cur_term_Strings) then
   if not assigned(cur_term_Strings) then
@@ -783,7 +783,7 @@ begin
    begin
    begin
     OutData(XY2Ansi(ScreenWidth,ScreenHeight,LastX,LastY));
     OutData(XY2Ansi(ScreenWidth,ScreenHeight,LastX,LastY));
     OutData(#8);
     OutData(#8);
-    {Output last char}
+    {Output last AnsiChar}
     chattr:=p[1];
     chattr:=p[1];
     if (LastFg<>chattr.ForegroundColor) or (LastBg<>chattr.BackgroundColor) or (LastAttr<>chattr.EnhancedVideoAttributes) then
     if (LastFg<>chattr.ForegroundColor) or (LastBg<>chattr.BackgroundColor) or (LastAttr<>chattr.EnhancedVideoAttributes) then
      OutClr(chattr.ForegroundColor,chattr.BackgroundColor,chattr.EnhancedVideoAttributes);
      OutClr(chattr.ForegroundColor,chattr.BackgroundColor,chattr.EnhancedVideoAttributes);
@@ -918,7 +918,7 @@ end;
 
 
 procedure decide_codepages;
 procedure decide_codepages;
 
 
-var s:string;
+var s:shortstring;
 
 
 begin
 begin
   if is_vga_code_page(external_codepage) then
   if is_vga_code_page(external_codepage) then
@@ -980,14 +980,14 @@ end;
 procedure SysInitVideo;
 procedure SysInitVideo;
 var
 var
 {$ifdef linux}
 {$ifdef linux}
-  FName: String;
+  FName: shortstring;
 {$endif linux}
 {$endif linux}
   WS: packed record
   WS: packed record
     ws_row, ws_col, ws_xpixel, ws_ypixel: Word;
     ws_row, ws_col, ws_xpixel, ws_ypixel: Word;
   end;
   end;
 {  Err: Longint;}
 {  Err: Longint;}
 {  prev_term : TerminalCommon_ptr1;}
 {  prev_term : TerminalCommon_ptr1;}
-  term:string;
+  term:shortstring;
   i:word;
   i:word;
 {$ifdef Linux}
 {$ifdef Linux}
   s:string[15];
   s:string[15];
@@ -996,8 +996,8 @@ var
   ThisTTY: String[30];
   ThisTTY: String[30];
 {$endif}
 {$endif}
 
 
-const font_vga:array[0..11] of char=#15#27'%@'#27'(U'#27'[3h';
-      font_lat1:array[0..5] of char=#27'%@'#27'(B';
+const font_vga:array[0..11] of AnsiChar=#15#27'%@'#27'(U'#27'[3h';
+      font_lat1:array[0..5] of AnsiChar=#27'%@'#27'(B';
 
 
 begin
 begin
   { check for tty }
   { check for tty }
@@ -1158,7 +1158,7 @@ end;
 
 
 procedure SysDoneVideo;
 procedure SysDoneVideo;
 
 
-var font_custom:array[0..2] of char=#27'(K';
+var font_custom:array[0..2] of AnsiChar=#27'(K';
 
 
 begin
 begin
   prepareDoneVideo;
   prepareDoneVideo;

+ 6 - 6
packages/rtl-console/src/watcom/crt.pp

@@ -298,12 +298,12 @@ End;
 
 
 var
 var
    is_last : boolean;
    is_last : boolean;
-   last    : char;
+   last    : AnsiChar;
 
 
-function readkey : char;
+function readkey : AnsiChar;
 var
 var
-  char2 : char;
-  char1 : char;
+  char2 : AnsiChar;
+  char1 : AnsiChar;
   regs : trealregs;
   regs : trealregs;
 begin
 begin
   if is_last then
   if is_last then
@@ -539,7 +539,7 @@ end;
 var
 var
   CurrX,CurrY : longint;
   CurrX,CurrY : longint;
 
 
-Procedure WriteChar(c:char);
+Procedure WriteChar(c:AnsiChar);
 var
 var
   regs : trealregs;
   regs : trealregs;
 begin
 begin
@@ -601,7 +601,7 @@ Procedure CrtRead(Var F: TextRec);
   end;
   end;
 
 
 var
 var
-  ch : Char;
+  ch : AnsiChar;
 Begin
 Begin
   GetScreenCursor(CurrX,CurrY);
   GetScreenCursor(CurrX,CurrY);
   f.bufpos:=0;
   f.bufpos:=0;

+ 7 - 7
packages/rtl-console/src/win/crt.pp

@@ -235,7 +235,7 @@ procedure ClrEol;
 }
 }
 var
 var
   Temp: DWord;
   Temp: DWord;
-  CharInfo: Char;
+  CharInfo: AnsiChar;
   Coord: TCoord;
   Coord: TCoord;
   X,Y: DWord;
   X,Y: DWord;
 begin
 begin
@@ -292,7 +292,7 @@ End;
 *************************************************************************}
 *************************************************************************}
 
 
 var
 var
-   ScanCode : char;
+   ScanCode : AnsiChar;
    SpecialKey : boolean;
    SpecialKey : boolean;
    DoingNumChars: Boolean;
    DoingNumChars: Boolean;
    DoingNumCode: Byte;
    DoingNumCode: Byte;
@@ -496,7 +496,7 @@ begin
 end;
 end;
 
 
 
 
-function ReadKey: char;
+function ReadKey: AnsiChar;
 begin
 begin
   while (not KeyPressed) do
   while (not KeyPressed) do
     Sleep(1);
     Sleep(1);
@@ -707,7 +707,7 @@ end;
 var
 var
   CurrX, CurrY : DWord;
   CurrX, CurrY : DWord;
 
 
-procedure WriteChar(c : char);
+procedure WriteChar(c : AnsiChar);
 var
 var
     WritePos: Coord;                       { Upper-left cell to write from }
     WritePos: Coord;                       { Upper-left cell to write from }
     numWritten : DWord;
     numWritten : DWord;
@@ -751,7 +751,7 @@ begin
 end;
 end;
 
 
 
 
-procedure WriteStr(const s: string);
+procedure WriteStr(const s: shortstring);
 var
 var
   WritePos: Coord; { Upper-left cell to write from }
   WritePos: Coord; { Upper-left cell to write from }
   numWritten : DWord;
   numWritten : DWord;
@@ -787,7 +787,7 @@ end;
 Procedure CrtWrite(var f : textrec);
 Procedure CrtWrite(var f : textrec);
 var
 var
   i : longint;
   i : longint;
-  s : string;
+  s : shortstring;
   OldConsoleOutputCP : Word;
   OldConsoleOutputCP : Word;
 begin
 begin
   if SafeCPSwitching and UseACP then    //Switch codepage on every Write.
   if SafeCPSwitching and UseACP then    //Switch codepage on every Write.
@@ -841,7 +841,7 @@ Procedure CrtRead(Var F: TextRec);
   end;
   end;
 
 
 var
 var
-  ch : Char;
+  ch : AnsiChar;
   OldConsoleOutputCP : Word;
   OldConsoleOutputCP : Word;
 begin
 begin
   if SafeCPSwitching and UseACP then    //Switch codepage on every Read
   if SafeCPSwitching and UseACP then    //Switch codepage on every Read

+ 6 - 6
packages/rtl-console/src/win/keyboard.pp

@@ -242,7 +242,7 @@ procedure HandleKeyboard(var ir:INPUT_RECORD);
 var
 var
    i      : longint;
    i      : longint;
    c      : word;
    c      : word;
-   altc : char;
+   altc : AnsiChar;
    addThis: boolean;
    addThis: boolean;
 begin
 begin
   { Since Windows supports switching between different input locales, the
   { Since Windows supports switching between different input locales, the
@@ -292,7 +292,7 @@ begin
                      if length (altNumBuffer) = 3 then
                      if length (altNumBuffer) = 3 then
                        delete (altNumBuffer,1,1);
                        delete (altNumBuffer,1,1);
                      case wVirtualKeyCode of
                      case wVirtualKeyCode of
-                       $60..$69 : altc:=char (wVirtualKeyCode-48);
+                       $60..$69 : altc:=AnsiChar (wVirtualKeyCode-48);
                        $c  : altc:='5';
                        $c  : altc:='5';
                        $21 : altc:='9';
                        $21 : altc:='9';
                        $22 : altc:='3';
                        $22 : altc:='3';
@@ -727,9 +727,9 @@ CONST
    (n : $00; s : $0F; c : $94; a: $00));     {0F Tab }
    (n : $00; s : $0F; c : $94; a: $00));     {0F Tab }
 
 
 
 
-function WideCharToOemCpChar(WC: WideChar): Char;
+function WideCharToOemCpChar(WC: WideChar): AnsiChar;
 var
 var
-  Res: Char;
+  Res: AnsiChar;
 begin
 begin
   if WideCharToMultiByte(CP_OEMCP,0,@WC,1,@Res,1,nil,nil)=0 then
   if WideCharToMultiByte(CP_OEMCP,0,@WC,1,@Res,1,nil,nil)=0 then
     Res:=#0;
     Res:=#0;
@@ -802,7 +802,7 @@ begin
   Key := NilEnhancedKeyEvent;
   Key := NilEnhancedKeyEvent;
   if t.ev.bKeyDown then
   if t.ev.bKeyDown then
   begin
   begin
-    { unicode-char is <> 0 if not a specal key }
+    { unicode-AnsiChar is <> 0 if not a specal key }
     { we return it here otherwise we have to translate more later }
     { we return it here otherwise we have to translate more later }
     if t.ev.UnicodeChar <> WideChar(0) then
     if t.ev.UnicodeChar <> WideChar(0) then
     begin
     begin
@@ -871,7 +871,7 @@ begin
     { ok, now add Shift-State }
     { ok, now add Shift-State }
     Key.ShiftState := t.ShiftState;
     Key.ShiftState := t.ShiftState;
 
 
-    { Reset Ascii-Char if Alt+Key, fv needs that, may be we
+    { Reset Ascii-AnsiChar if Alt+Key, fv needs that, may be we
       need it for other special keys too
       need it for other special keys too
       18 Sept 1999 AD: not for right Alt i.e. for AltGr+ß = \ on german keyboard }
       18 Sept 1999 AD: not for right Alt i.e. for AltGr+ß = \ on german keyboard }
     if (essAlt in t.ShiftState) or
     if (essAlt in t.ShiftState) or

+ 1 - 1
packages/rtl-console/src/win/video.pp

@@ -31,7 +31,7 @@ const
     LastCursorType: word = crUnderline;
     LastCursorType: word = crUnderline;
     OrigScreen: PVideoBuf = nil;
     OrigScreen: PVideoBuf = nil;
     OrigScreenSize: cardinal = 0;
     OrigScreenSize: cardinal = 0;
-    ConsoleOutDeviceName: string [8] = 'CONOUT$'#0;
+    ConsoleOutDeviceName: string[8] = 'CONOUT$'#0;
 
 
 var ConsoleInfo : TConsoleScreenBufferInfo;
 var ConsoleInfo : TConsoleScreenBufferInfo;
     ConsoleCursorInfo : TConsoleCursorInfo;
     ConsoleCursorInfo : TConsoleCursorInfo;

+ 5 - 5
packages/rtl-console/src/win16/crt.pp

@@ -243,12 +243,12 @@ End;
 
 
 var
 var
    is_last : boolean;
    is_last : boolean;
-   last    : char;
+   last    : AnsiChar;
 
 
-function readkey : char;
+function readkey : AnsiChar;
 var
 var
   k: TKeyEvent;
   k: TKeyEvent;
-  char1, char2: char;
+  char1, char2: AnsiChar;
 begin
 begin
   if is_last then
   if is_last then
   begin
   begin
@@ -390,7 +390,7 @@ end;
 var
 var
   CurrX,CurrY : smallint;
   CurrX,CurrY : smallint;
 
 
-Procedure WriteChar(c:char);
+Procedure WriteChar(c:AnsiChar);
 begin
 begin
   case c of
   case c of
    #10 : inc(CurrY);
    #10 : inc(CurrY);
@@ -451,7 +451,7 @@ Procedure CrtRead(Var F: TextRec);
   end;
   end;
 
 
 var
 var
-  ch : Char;
+  ch : AnsiChar;
 Begin
 Begin
   GetScreenCursor(CurrX,CurrY);
   GetScreenCursor(CurrX,CurrY);
   f.bufpos:=0;
   f.bufpos:=0;

+ 1 - 1
packages/rtl-console/tests/kbd1.pp

@@ -3,7 +3,7 @@ program kbd1;
 uses
 uses
   keyboard;
   keyboard;
 
 
-procedure ShowASCIIKey(C: Char);
+procedure ShowASCIIKey(C: AnsiChar);
 begin
 begin
   Write('ASCII key #', Ord(C), ' - #$', HexStr(Ord(C), 2));
   Write('ASCII key #', Ord(C), ' - #$', HexStr(Ord(C), 2));
   if C = '''' then
   if C = '''' then

+ 2 - 2
packages/rtl-console/tests/kbd2.pp

@@ -3,7 +3,7 @@ program kbd2;
 uses
 uses
   keyboard;
   keyboard;
 
 
-procedure ShowASCIIKey(C: Char);
+procedure ShowASCIIKey(C: AnsiChar);
 begin
 begin
   Write('ASCII key #', Ord(C), ' - #$', HexStr(Ord(C), 2));
   Write('ASCII key #', Ord(C), ' - #$', HexStr(Ord(C), 2));
   if C = '''' then
   if C = '''' then
@@ -19,7 +19,7 @@ begin
   Write('Unicode key #', Ord(WC));
   Write('Unicode key #', Ord(WC));
 end;
 end;
 
 
-function EnhancedShiftStateToString(const ShiftState: TEnhancedShiftState): string;
+function EnhancedShiftStateToString(const ShiftState: TEnhancedShiftState): shortstring;
 var
 var
   S: TEnhancedShiftStateElement;
   S: TEnhancedShiftStateElement;
   FirstElement: Boolean = True;
   FirstElement: Boolean = True;

+ 1 - 1
packages/rtl-console/tests/kbdbdump.pp

@@ -42,7 +42,7 @@ begin
   TextOut(56, 17, 'Right_Shift', BitAttr(Regs.AX,  0));
   TextOut(56, 17, 'Right_Shift', BitAttr(Regs.AX,  0));
 end;
 end;
 
 
-procedure SampleAllKeys(const Kbd: TKeyboard; const OutFileName: string);
+procedure SampleAllKeys(const Kbd: TKeyboard; const OutFileName: AnsiString);
 var
 var
   I: Integer;
   I: Integer;
   Regs: Registers;
   Regs: Registers;

+ 1 - 1
packages/rtl-console/tests/kbddump.pp

@@ -5,7 +5,7 @@ program kbddump;
 uses
 uses
   Video, Keyboard, Mouse, kbdutil, vidutil;
   Video, Keyboard, Mouse, kbdutil, vidutil;
 
 
-procedure SampleAllKeys(const Kbd: TKeyboard; const OutFileName: string);
+procedure SampleAllKeys(const Kbd: TKeyboard; const OutFileName: AnsiString);
 var
 var
   I: Integer;
   I: Integer;
   K: TKeyEvent;
   K: TKeyEvent;

+ 4 - 4
packages/rtl-console/tests/kbdutil.pp

@@ -8,23 +8,23 @@ type
   TKey = record
   TKey = record
     X, Y: Integer;
     X, Y: Integer;
     YTop, YBottom: Integer;
     YTop, YBottom: Integer;
-    KeyLabel: string;
+    KeyLabel: ansistring;
   end;
   end;
   TKeys = array of TKey;
   TKeys = array of TKey;
   TKeyboard = record
   TKeyboard = record
     Keys: TKeys;
     Keys: TKeys;
   end;
   end;
 
 
-function ReadKeyboardFromFile(const FileName: string): TKeyboard;
+function ReadKeyboardFromFile(const FileName: ansistring): TKeyboard;
 
 
 implementation
 implementation
 
 
-function ReadKeyboardFromFile(const FileName: string): TKeyboard;
+function ReadKeyboardFromFile(const FileName: ansistring): TKeyboard;
 var
 var
   SaveCtrlZMarksEOF: Boolean;
   SaveCtrlZMarksEOF: Boolean;
   InF: TextFile;
   InF: TextFile;
   KeyX, KeyY, KeyY1, KeyY2: Integer;
   KeyX, KeyY, KeyY1, KeyY2: Integer;
-  KeyStr: string;
+  KeyStr: ansistring;
 begin
 begin
   SaveCtrlZMarksEOF := CtrlZMarksEOF;
   SaveCtrlZMarksEOF := CtrlZMarksEOF;
   try
   try

+ 1 - 1
packages/rtl-console/tests/video4.pp

@@ -6,7 +6,7 @@ program video4;
 uses
 uses
   video, keyboard;
   video, keyboard;
 
 
-procedure TextOut(X, Y: Integer; const S: string; Attr: TEnhancedVideoAttributes);
+procedure TextOut(X, Y: Integer; const S: AnsiString; Attr: TEnhancedVideoAttributes);
 var
 var
   W, P, I, M: Integer;
   W, P, I, M: Integer;
 begin
 begin

+ 2 - 2
packages/rtl-console/tests/vidutil.pp

@@ -7,7 +7,7 @@ interface
 uses
 uses
   KbdUtil;
   KbdUtil;
 
 
-procedure TextOut(X, Y: Integer; const S: string; TextAttr: Byte);
+procedure TextOut(X, Y: Integer; const S: AnsiString; TextAttr: Byte);
 procedure DrawKey(const Key: TKey; TextAttr: Byte);
 procedure DrawKey(const Key: TKey; TextAttr: Byte);
 procedure DrawKeyboard(const Kbd: TKeyboard);
 procedure DrawKeyboard(const Kbd: TKeyboard);
 
 
@@ -16,7 +16,7 @@ implementation
 uses
 uses
   Video;
   Video;
 
 
-procedure TextOut(X, Y: Integer; const S: string; TextAttr: Byte);
+procedure TextOut(X, Y: Integer; const S: AnsiString; TextAttr: Byte);
 var
 var
   W, P, I, M: Integer;
   W, P, I, M: Integer;
 begin
 begin