Skip to content

Commit

Permalink
more keystrokes detected in Terminal.c
Browse files Browse the repository at this point in the history
  • Loading branch information
Root User committed Feb 8, 2020
1 parent 42a4ade commit d2882cf
Showing 1 changed file with 275 additions and 44 deletions.
319 changes: 275 additions & 44 deletions Terminal.c
Original file line number Diff line number Diff line change
Expand Up @@ -504,6 +504,54 @@ const char *TerminalTranslateKeyCode(int key)
case TKEY_ALT_MENU:
return("ALT_MENU");
break;

case TKEY_ALT_F1:
return("ALT_F1");
break;

case TKEY_ALT_F2:
return("ALT_F2");
break;

case TKEY_ALT_F3:
return("ALT_F3");
break;

case TKEY_ALT_F4:
return("ALT_F4");
break;

case TKEY_ALT_F5:
return("ALT_F5");
break;

case TKEY_ALT_F6:
return("ALT_F6");
break;

case TKEY_ALT_F7:
return("ALT_F7");
break;

case TKEY_ALT_F8:
return("ALT_F8");
break;

case TKEY_ALT_F9:
return("ALT_F9");
break;

case TKEY_ALT_F10:
return("ALT_F10");
break;

case TKEY_ALT_F11:
return("ALT_F11");
break;

case TKEY_ALT_F12:
return("ALT_F12");
break;
}

KeyStr[0]='?';
Expand Down Expand Up @@ -1081,9 +1129,230 @@ void TerminalPutStr(const char *Str, STREAM *S)



//Getting desperate on what to name these, this one deals
//with a sequence that goes ESC[;1
static int TerminalReadCSISeqSemicolon1(STREAM *S)
{
int inchar;

inchar=STREAMReadChar(S);
switch (inchar)
{
case '2':
inchar=STREAMReadChar(S);
switch (inchar)
{
case 'A': return(TKEY_SHIFT_UP); break;
case 'B': return(TKEY_SHIFT_DOWN); break;
case 'C': return(TKEY_SHIFT_RIGHT); break;
case 'D': return(TKEY_SHIFT_LEFT); break;
case 'F': return(TKEY_SHIFT_END); break;
case 'H': return(TKEY_SHIFT_HOME); break;
case 'P': return(TKEY_SHIFT_F1); break;
case 'Q': return(TKEY_SHIFT_F2); break;
case 'R': return(TKEY_SHIFT_F3); break;
case 'S': return(TKEY_SHIFT_F4); break;
}
break;

case '3':
inchar=STREAMReadChar(S);
switch (inchar)
{
case 'A': return(TKEY_ALT_UP); break;
case 'B': return(TKEY_ALT_DOWN); break;
case 'C': return(TKEY_ALT_RIGHT); break;
case 'D': return(TKEY_ALT_LEFT); break;
case 'F': return(TKEY_ALT_END); break;
case 'H': return(TKEY_ALT_HOME); break;

case 'P': return(TKEY_ALT_F1); break;
case 'Q': return(TKEY_ALT_F2); break;
case 'R': return(TKEY_ALT_F3); break;
case 'S': return(TKEY_ALT_F4); break;
}
break;


case '5':
inchar=STREAMReadChar(S);
switch (inchar)
{
case 'A': return(TKEY_CTRL_UP); break;
case 'B': return(TKEY_CTRL_DOWN); break;
case 'C': return(TKEY_CTRL_RIGHT); break;
case 'D': return(TKEY_CTRL_LEFT); break;
case 'F': return(TKEY_CTRL_END); break;
case 'H': return(TKEY_CTRL_HOME); break;

case 'P': return(TKEY_CTRL_F1); break;
case 'Q': return(TKEY_CTRL_F2); break;
case 'R': return(TKEY_CTRL_F3); break;
case 'S': return(TKEY_CTRL_F4); break;
}
break;
}

return(0);
}



//Getting desperate on what to name these, this one deals
//with a sequence that goes ESC[;2
static int TerminalReadCSISeqSemicolon2(STREAM *S)
{
int inchar;

inchar=STREAMReadChar(S);
switch (inchar)
{
case '2':
inchar=STREAMReadChar(S);
switch (inchar)
{
case 'A': return(TKEY_SHIFT_UP); break;
case 'B': return(TKEY_SHIFT_DOWN); break;
case 'C': return(TKEY_SHIFT_RIGHT); break;
case 'D': return(TKEY_SHIFT_LEFT); break;
case 'F': return(TKEY_SHIFT_END); break;
case 'H': return(TKEY_SHIFT_HOME); break;
}
break;

case '3':
inchar=STREAMReadChar(S);
switch (inchar)
{
case 'A': return(TKEY_ALT_UP); break;
case 'B': return(TKEY_ALT_DOWN); break;
case 'C': return(TKEY_ALT_RIGHT); break;
case 'D': return(TKEY_ALT_LEFT); break;
case 'F': return(TKEY_ALT_END); break;
case 'H': return(TKEY_ALT_HOME); break;
}
break;


case '5':
inchar=STREAMReadChar(S);
switch (inchar)
{
case 'A': return(TKEY_CTRL_UP); break;
case 'B': return(TKEY_CTRL_DOWN); break;
case 'C': return(TKEY_CTRL_RIGHT); break;
case 'D': return(TKEY_CTRL_LEFT); break;
case 'F': return(TKEY_CTRL_END); break;
case 'H': return(TKEY_CTRL_HOME); break;

case 'P': return(TKEY_CTRL_F1); break;
case 'Q': return(TKEY_CTRL_F2); break;
case 'R': return(TKEY_CTRL_F3); break;
case 'S': return(TKEY_CTRL_F4); break;
}
break;
}

return(0);
}



int TerminalReadCSISeqSemicolon(STREAM *S, int val)
{
int inchar;

inchar=STREAMReadChar(S);
switch (inchar)
{
case '2':
inchar=STREAMReadChar(S);
switch (inchar)
{
case '~':
switch(val)
{
case 5: return(TKEY_SHIFT_PGUP); break;
case 6: return(TKEY_SHIFT_PGDN); break;
case 15: return(TKEY_SHIFT_F5); break;
case 17: return(TKEY_SHIFT_F6); break;
case 18: return(TKEY_SHIFT_F7); break;
case 19: return(TKEY_SHIFT_F8); break;
case 20: return(TKEY_SHIFT_F9); break;
case 21: return(TKEY_SHIFT_F10); break;
case 23: return(TKEY_SHIFT_F11); break;
case 24: return(TKEY_SHIFT_F12); break;
}
break;
}
break;

case '3':
inchar=STREAMReadChar(S);
switch (inchar)
{
case '~':
switch(val)
{
case 5: return(TKEY_ALT_PGUP); break;
case 6: return(TKEY_ALT_PGDN); break;
case 15: return(TKEY_ALT_F5); break;
case 17: return(TKEY_ALT_F6); break;
case 18: return(TKEY_ALT_F7); break;
case 19: return(TKEY_ALT_F8); break;
case 20: return(TKEY_ALT_F9); break;
case 21: return(TKEY_ALT_F10); break;
case 23: return(TKEY_ALT_F11); break;
case 24: return(TKEY_ALT_F12); break;
}
break;
}
break;

int TerminalReadCSISeq(STREAM *S, char PrevChar)
case '5':
inchar=STREAMReadChar(S);
switch (inchar)
{
case '~':
switch(val)
{
case 5: return(TKEY_CTRL_PGUP); break;
case 6: return(TKEY_CTRL_PGDN); break;
case 15: return(TKEY_CTRL_F5); break;
case 17: return(TKEY_CTRL_F6); break;
case 18: return(TKEY_CTRL_F7); break;
case 19: return(TKEY_CTRL_F8); break;
case 20: return(TKEY_CTRL_F9); break;
case 21: return(TKEY_CTRL_F10); break;
case 23: return(TKEY_CTRL_F11); break;
case 24: return(TKEY_CTRL_F12); break;
}
break;
}
break;


case '~':
switch (val)
{
case 5: return(TKEY_CTRL_PGUP); break;
case 6: return(TKEY_CTRL_PGDN); break;
case 15: return(TKEY_CTRL_F5); break;
case 17: return(TKEY_CTRL_F6); break;
case 18: return(TKEY_CTRL_F7); break;
case 19: return(TKEY_CTRL_F9); break;
case 20: return(TKEY_CTRL_F10); break;
case 21: return(TKEY_CTRL_F11); break;
case 22: return(TKEY_CTRL_F12); break;
}
break;
}

return(0);
}


static int TerminalReadCSISeq(STREAM *S, char PrevChar)
{
char *Tempstr=NULL;
int inchar, val;
Expand Down Expand Up @@ -1333,50 +1602,12 @@ int TerminalReadCSISeq(STREAM *S, char PrevChar)
break;

case ';':
inchar=STREAMReadChar(S);
switch (inchar)
switch (val)
{
case '2':
inchar=STREAMReadChar(S);
switch (inchar)
{
case 'A': return(TKEY_SHIFT_UP); break;
case 'B': return(TKEY_SHIFT_DOWN); break;
case 'C': return(TKEY_SHIFT_RIGHT); break;
case 'D': return(TKEY_SHIFT_LEFT); break;
case 'F': return(TKEY_SHIFT_END); break;
case 'H': return(TKEY_SHIFT_HOME); break;
}
break;

case '3':
inchar=STREAMReadChar(S);
switch (inchar)
{
case 'A': return(TKEY_ALT_UP); break;
case 'B': return(TKEY_ALT_DOWN); break;
case 'C': return(TKEY_ALT_RIGHT); break;
case 'D': return(TKEY_ALT_LEFT); break;
case 'F': return(TKEY_ALT_END); break;
case 'H': return(TKEY_ALT_HOME); break;
}
break;


case '5':
inchar=STREAMReadChar(S);
switch (inchar)
{
case 'A': return(TKEY_CTRL_UP); break;
case 'B': return(TKEY_CTRL_DOWN); break;
case 'C': return(TKEY_CTRL_RIGHT); break;
case 'D': return(TKEY_CTRL_LEFT); break;
case 'F': return(TKEY_CTRL_END); break;
case 'H': return(TKEY_CTRL_HOME); break;

}
break;
}
case 1: return(TerminalReadCSISeqSemicolon1(S)); break;
case 2: return(TerminalReadCSISeqSemicolon2(S)); break;
default: return(TerminalReadCSISeqSemicolon(S, val)); break;
}
break;

}
Expand Down

0 comments on commit d2882cf

Please sign in to comment.