* patch by Nikolay Nikolov to support Alt-Tab and Ctrl-Tab on the linux console, resolves #19247

git-svn-id: trunk@18225 -
This commit is contained in:
florian 2011-08-16 18:58:50 +00:00
parent b5ebe6307f
commit c32bc3a22a

View File

@ -742,7 +742,7 @@ type key_sequence=packed record
st:string[7];
end;
const key_sequences:array[0..276] of key_sequence=(
const key_sequences:array[0..277] of key_sequence=(
(char:0;scan:kbAltA;st:#27'A'),
(char:0;scan:kbAltA;st:#27'a'),
(char:0;scan:kbAltB;st:#27'B'),
@ -982,6 +982,7 @@ const key_sequences:array[0..276] of key_sequence=(
(char:0;scan:kbAltF11;st:#27'[23;3~'), {xterm on FreeBSD}
(char:0;scan:kbAltF12;st:#27'[24;3~'), {xterm on FreeBSD}
(char:0;scan:kbShiftTab;st:#27#9), {linux - 'Meta_Tab'}
(char:0;scan:kbShiftTab;st:#27'[Z'),
(char:0;scan:kbShiftUp;st:#27'[1;2A'), {xterm}
(char:0;scan:kbShiftDown;st:#27'[1;2B'), {xterm}
@ -1432,6 +1433,7 @@ begin {main}
{ Handle Ctrl-<x>, but not AltGr-<x> }
if ((SState and kbCtrl)<>0) and ((SState and kbAlt) = 0) then
case MyScan of
kbShiftTab: MyScan := kbCtrlTab;
kbHome..kbDel : { cArrow }
MyScan:=CtrlArrow[MyScan];
kbF1..KbF10 : { cF1-cF10 }
@ -1442,6 +1444,7 @@ begin {main}
{ Handle Alt-<x>, but not AltGr }
else if ((SState and kbAlt)<>0) and ((SState and kbCtrl) = 0) then
case MyScan of
kbShiftTab: MyScan := kbAltTab;
kbHome..kbDel : { AltArrow }
MyScan:=AltArrow[MyScan];
kbF1..KbF10 : { aF1-aF10 }
@ -1520,11 +1523,27 @@ begin {main}
if not again then
begin
MyScan:=EvalScan(ord(MyChar));
if ((SState and kbAlt)<>0) and ((SState and kbCtrl) = 0) then
if ((SState and kbCtrl)<>0) and ((SState and kbAlt) = 0) then
begin
if MyScan in [$02..$0D] then
inc(MyScan,$76);
MyChar:=chr(0);
if MyChar=#9 then
begin
MyChar:=#0;
MyScan:=kbCtrlTab;
end;
end
else if ((SState and kbAlt)<>0) and ((SState and kbCtrl) = 0) then
begin
if MyChar=#9 then
begin
MyChar:=#0;
MyScan:=kbAltTab;
end
else
begin
if MyScan in [$02..$0D] then
inc(MyScan,$76);
MyChar:=chr(0);
end;
end
else if (SState and kbShift)<>0 then
if MyChar=#9 then