Browse Source

* FreeBSD delete key
* Alt+Backspace in xterm

git-svn-id: trunk@2425 -

daniel 19 years ago
parent
commit
aef758d3b5
1 changed files with 14 additions and 3 deletions
  1. 14 3
      rtl/unix/keyboard.pp

+ 14 - 3
rtl/unix/keyboard.pp

@@ -714,9 +714,18 @@ end;
 procedure LoadDefaultSequences;
 procedure LoadDefaultSequences;
 begin
 begin
   AddSpecialSequence(#27'[M',@GenMouseEvent);
   AddSpecialSequence(#27'[M',@GenMouseEvent);
-  { linux default values, the next setting is
-    compatible with xterms from XFree 4.x }
-  DoAddSequence(#127,8,0);
+  {Unix backspace/delete hell... Is #127 a backspace or delete?}
+  if copy(fpgetenv('TERM'),1,4)='cons' then
+    begin
+      {FreeBSD is until now only terminal that uses it for delete.}
+      DoAddSequence(#127,0,kbDel);        {Delete}
+      DoAddSequence(#27#127,0,kbAltDel);  {Alt+delete}
+    end
+  else
+    begin
+      DoAddSequence(#127,8,0);            {Backspace}
+      DoAddSequence(#27#127,0,kbAltBack); {Alt+backspace}
+    end;
   { all Esc letter }
   { all Esc letter }
   DoAddSequence(#27'A',0,kbAltA);
   DoAddSequence(#27'A',0,kbAltA);
   DoAddSequence(#27'a',0,kbAltA);
   DoAddSequence(#27'a',0,kbAltA);
@@ -1343,6 +1352,8 @@ begin {main}
             myscan:=ShiftArrow[myscan];
             myscan:=ShiftArrow[myscan];
             sstate:=sstate or kbshift;
             sstate:=sstate or kbshift;
           end;
           end;
+        if myscan=kbAltBack then
+          sstate:=sstate or kbalt;
         if (MyChar<>#0) or (MyScan<>0) or (SState<>0) then
         if (MyChar<>#0) or (MyScan<>0) or (SState<>0) then
           SysGetKeyEvent:=$3000000 or ord(MyChar) or (MyScan shl 8) or (SState shl 16)
           SysGetKeyEvent:=$3000000 or ord(MyChar) or (MyScan shl 8) or (SState shl 16)
         else
         else