mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 08:48:08 +02:00
Additional function key escape sequences for rxvt (urxvt)
This commit is contained in:
parent
0a23fc17cf
commit
aeb17a48fc
@ -969,7 +969,7 @@ type key_sequence=packed record
|
||||
st:string[10];
|
||||
end;
|
||||
|
||||
const key_sequences:array[0..385] of key_sequence=(
|
||||
const key_sequences:array[0..425] of key_sequence=(
|
||||
(AnsiChar:0;scan:$39;shift:[essCtrl];st:#0), { xterm, Ctrl+Space }
|
||||
(AnsiChar:0;scan:kbAltA;shift:[essAlt];st:#27'A'),
|
||||
(AnsiChar:0;scan:kbAltA;shift:[essAlt];st:#27'a'),
|
||||
@ -1079,6 +1079,15 @@ const key_sequences:array[0..385] of key_sequence=(
|
||||
(AnsiChar:0;scan:kbF12;shift:[];st:#27'Oz'), {vt100}
|
||||
(AnsiChar:27;scan:kbEsc;shift:[];st:#27'[0~'), {if linux keyboard patched, escape
|
||||
returns this}
|
||||
(AnsiChar:0;scan:kbAltF5;shift:[essAlt];st:#27#27'OT'), {pterm}
|
||||
(AnsiChar:0;scan:kbF5;shift:[];st:#27'OT'), {pterm}
|
||||
(AnsiChar:0;scan:kbF6;shift:[];st:#27'OU'), {pterm}
|
||||
(AnsiChar:0;scan:kbF7;shift:[];st:#27'OV'), {pterm}
|
||||
(AnsiChar:0;scan:kbF8;shift:[];st:#27'OW'), {pterm}
|
||||
(AnsiChar:0;scan:kbF9;shift:[];st:#27'OX'), {pterm}
|
||||
(AnsiChar:0;scan:kbF10;shift:[];st:#27'OY'), {pterm}
|
||||
(AnsiChar:0;scan:kbF11;shift:[];st:#27'OZ'), {pterm}
|
||||
(AnsiChar:0;scan:kbF12;shift:[];st:#27'O['), {pterm}
|
||||
(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}
|
||||
@ -1195,6 +1204,7 @@ const key_sequences:array[0..385] of key_sequence=(
|
||||
(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:kbShiftIns;shift:[essShift];st:#27'[2$'), {rxvt}
|
||||
(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}
|
||||
@ -1304,7 +1314,8 @@ const key_sequences:array[0..385] of key_sequence=(
|
||||
(AnsiChar:0;scan:kbEnd;shift:[essShift];st:#27'[8$'), {rxvt}
|
||||
(AnsiChar:0;scan:kbHome;shift:[essShift];st:#27'[1;2H'), {xterm}
|
||||
(AnsiChar:0;scan:kbHome;shift:[essShift];st:#27'[7$'), {rxvt}
|
||||
|
||||
(AnsiChar:0;scan:kbShiftIns;shift:[essShift];st:#27'Op'), {rxvt - on numpad}
|
||||
(AnsiChar:0;scan:kbShiftDel;shift:[essShift];st:#27'On'), {rxvt - on numpad}
|
||||
|
||||
(AnsiChar:0;scan:KbCtrlUp;shift:[essCtrl,essShift];st:#27'[1;6A'), {xterm}
|
||||
(AnsiChar:0;scan:KbCtrlDown;shift:[essCtrl,essShift];st:#27'[1;6B'), {xterm}
|
||||
@ -1333,11 +1344,28 @@ const key_sequences:array[0..385] of key_sequence=(
|
||||
(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:kbCtrlPgUp;shift:[essCtrl];st:#27'[5^'), {rxvt}
|
||||
(AnsiChar:0;scan:kbCtrlPgDn;shift:[essCtrl];st:#27'[6^'), {rxvt}
|
||||
(AnsiChar:0;scan:kbCtrlUp;shift:[essCtrl];st:#27'Oa'), {rxvt}
|
||||
(AnsiChar:0;scan:kbCtrlDown;shift:[essCtrl];st:#27'Ob'), {rxvt}
|
||||
(AnsiChar:0;scan:kbCtrlLeft;shift:[essCtrl];st:#27'Od'), {rxvt}
|
||||
(AnsiChar:0;scan:kbCtrlRight;shift:[essCtrl];st:#27'Oc'), {rxvt}
|
||||
(AnsiChar:0;scan:kbCtrlPgUp;shift:[essCtrl,essShift];st:#27'[5@'), {rxvt}
|
||||
(AnsiChar:0;scan:kbCtrlPgDn;shift:[essCtrl,essShift];st:#27'[6@'), {rxvt}
|
||||
(AnsiChar:0;scan:kbCtrlEnd;shift:[essCtrl,essShift];st:#27'[8@'), {rxvt}
|
||||
(AnsiChar:0;scan:kbCtrlHome;shift:[essCtrl,essShift];st:#27'[7@'), {rxvt}
|
||||
(AnsiChar:0;scan:kbCtrlIns;shift:[essCtrl,essShift];st:#27'[2@'), {rxvt}
|
||||
(AnsiChar:0;scan:kbCtrlDel;shift:[essCtrl,essShift];st:#27'[3@'), {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}
|
||||
(AnsiChar:0;scan:kbAltUp;shift:[essShift,essAlt];st:#27#27'[a'), {rxvt}
|
||||
(AnsiChar:0;scan:kbAltDown;shift:[essShift,essAlt];st:#27#27'[b'), {rxvt}
|
||||
(AnsiChar:0;scan:kbAltLeft;shift:[essShift,essAlt];st:#27#27'[d'), {rxvt}
|
||||
(AnsiChar:0;scan:kbAltRight;shift:[essShift,essAlt];st:#27#27'[c'), {rxvt}
|
||||
{$ifdef HAIKU}
|
||||
(AnsiChar:0;scan:kbAltUp;shift:[essAlt];st:#27#27'OA'),
|
||||
(AnsiChar:0;scan:kbAltDown;shift:[essAlt];st:#27#27'OB'),
|
||||
@ -1356,6 +1384,18 @@ const key_sequences:array[0..385] of key_sequence=(
|
||||
(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}
|
||||
(AnsiChar:0;scan:kbAltPgUp;shift:[essShift,essAlt];st:#27#27'[5$'), {rxvt}
|
||||
(AnsiChar:0;scan:kbAltPgDn;shift:[essShift,essAlt];st:#27#27'[6$'), {rxvt}
|
||||
(AnsiChar:0;scan:kbAltEnd;shift:[essShift,essAlt];st:#27#27'[8$'), {rxvt}
|
||||
(AnsiChar:0;scan:kbAltHome;shift:[essShift,essAlt];st:#27#27'[7$'), {rxvt}
|
||||
(AnsiChar:0;scan:kbAltIns;shift:[essShift,essAlt];st:#27#27'[2$'), {rxvt}
|
||||
(AnsiChar:0;scan:kbAltDel;shift:[essShift,essAlt];st:#27#27'[3$'), {rxvt}
|
||||
(AnsiChar:0;scan:kbAltPgUp;shift:[essCtrl,essShift,essAlt];st:#27#27'[5@'), {rxvt}
|
||||
(AnsiChar:0;scan:kbAltPgDn;shift:[essCtrl,essShift,essAlt];st:#27#27'[6@'), {rxvt}
|
||||
(AnsiChar:0;scan:kbAltEnd;shift:[essCtrl,essShift,essAlt];st:#27#27'[8@'), {rxvt}
|
||||
(AnsiChar:0;scan:kbAltHome;shift:[essCtrl,essShift,essAlt];st:#27#27'[7@'), {rxvt}
|
||||
(AnsiChar:0;scan:kbAltIns;shift:[essCtrl,essShift,essAlt];st:#27#27'[2@'), {rxvt}
|
||||
(AnsiChar:0;scan:kbAltDel;shift:[essCtrl,essShift,essAlt];st:#27#27'[3@'), {rxvt}
|
||||
|
||||
(AnsiChar:0;scan:KbAltUp;shift:[essAlt];st:#27'[1;3A'), {xterm}
|
||||
(AnsiChar:0;scan:KbAltDown;shift:[essAlt];st:#27'[1;3B'), {xterm}
|
||||
@ -1409,6 +1449,49 @@ const key_sequences:array[0..385] of key_sequence=(
|
||||
(AnsiChar:0;scan:0;shift:[];st:#27'[?7h')
|
||||
);
|
||||
|
||||
{those are rxvt specific, due to conflict can not put in main array }
|
||||
const rxvt_key_sequences:array[0..7] of key_sequence=(
|
||||
(AnsiChar:0;scan:kbShiftF3;shift:[essShift];st:#27'[25~'), {rxvt,pterm}
|
||||
(AnsiChar:0;scan:kbShiftF4;shift:[essShift];st:#27'[26~'), {rxvt,pterm}
|
||||
(AnsiChar:0;scan:kbShiftF5;shift:[essShift];st:#27'[28~'), {rxvt,pterm}
|
||||
(AnsiChar:0;scan:kbShiftF6;shift:[essShift];st:#27'[29~'), {rxvt,pterm}
|
||||
(AnsiChar:0;scan:kbShiftF7;shift:[essShift];st:#27'[31~'), {rxvt,pterm}
|
||||
(AnsiChar:0;scan:kbShiftF8;shift:[essShift];st:#27'[32~'), {rxvt,pterm}
|
||||
(AnsiChar:0;scan:kbShiftF9;shift:[essShift];st:#27'[33~'), {rxvt,pterm}
|
||||
(AnsiChar:0;scan:kbShiftF10;shift:[essShift];st:#27'[34~') {rxvt,pterm}
|
||||
);
|
||||
|
||||
type TTerm = (trNone,trCons,trEterm,trGnome,trKonsole,trRxvt,trScreen,trXterm,trLinux);
|
||||
|
||||
function detect_terminal:TTerm;
|
||||
const terminals:array[TTerm] of string[7]=('None'#0,'cons','eterm','gnome',
|
||||
'konsole','rxvt','screen',
|
||||
'xterm','linux');
|
||||
var term:string;
|
||||
i,t:TTerm;
|
||||
begin
|
||||
detect_terminal:=trNone;
|
||||
t:=trNone;
|
||||
term:=fpgetenv('TERM');
|
||||
for i:=low(terminals) to high(terminals) do
|
||||
if copy(term,1,length(terminals[i]))=terminals[i] then
|
||||
begin
|
||||
t:=i;
|
||||
break;
|
||||
end;
|
||||
if t=trXterm then
|
||||
begin
|
||||
{Rxvt sets TERM=xterm and COLORTERM=rxvt. Gnome does something similar.}
|
||||
term:=fpgetenv('COLORTERM');
|
||||
for i:=low(terminals) to high(terminals) do
|
||||
if copy(term,1,length(terminals[i]))=terminals[i] then
|
||||
begin
|
||||
t:=i;
|
||||
break;
|
||||
end;
|
||||
end;
|
||||
detect_terminal:=t;
|
||||
end;
|
||||
|
||||
type TKeyByte = array [0..23] of byte;
|
||||
PKeyByte = ^TKeyByte;
|
||||
@ -1688,6 +1771,12 @@ begin
|
||||
for i:=low(key_sequences) to high(key_sequences) do
|
||||
with key_sequences[i] do
|
||||
DoAddSequence(st,AnsiChar,scan,shift);
|
||||
if detect_terminal in [trRxvt] then
|
||||
begin {rxvt specific escape sequences}
|
||||
for i:=low(rxvt_key_sequences) to high(rxvt_key_sequences) do
|
||||
with rxvt_key_sequences[i] do
|
||||
DoAddSequence(st,AnsiChar,scan,shift);
|
||||
end;
|
||||
sunKeySquences;
|
||||
end;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user