@ -72,91 +72,95 @@ static unsigned int defaultucs = 257;
* * 0 : no value
* * > 0 : crlf mode is enabled
* * < 0 : crlf mode is disabled
*
* Be careful with the order of the definitons because st searchs in
* this table sequencially , so any XK_ANY_MOD must be in the last
* position for a key .
*/
/* key, mask, output, keypad, cursor, crlf */
static Key key [ ] = {
/* keysym mask string keypad cursor crlf */
{ XK_KP_Home , XK_NO_MOD , " \033 [H " , 0 , 0 , 0 } ,
{ XK_KP_Home , ShiftMask , " \033 [1;2H " , 0 , 0 , 0 } ,
{ XK_KP_Up , XK_NO_MOD , " \033 Ox " , + 1 , 0 , 0 } ,
{ XK_KP_Up , XK_NO_MOD , " \033 [A " , 0 , - 1 , 0 } ,
{ XK_KP_Up , XK_NO_MOD , " \033 O A" , 0 , + 1 , 0 } ,
{ XK_KP_Down , XK_NO_MOD , " \033 Or " , + 1 , 0 , 0 } ,
{ XK_KP_Down , XK_NO_MOD , " \033 [B " , 0 , - 1 , 0 } ,
{ XK_KP_Down , XK_NO_MOD , " \033 O B" , 0 , + 1 , 0 } ,
{ XK_KP_Left , XK_NO_MOD , " \033 Ot " , + 1 , 0 , 0 } ,
{ XK_KP_Left , XK_NO_MOD , " \033 [D " , 0 , - 1 , 0 } ,
{ XK_KP_Left , XK_NO_MOD , " \033 O D" , 0 , + 1 , 0 } ,
{ XK_KP_Right , XK_NO_MOD , " \033 Ov " , + 1 , 0 , 0 } ,
{ XK_KP_Right , XK_NO_MOD , " \033 [C " , 0 , - 1 , 0 } ,
{ XK_KP_Right , XK_NO_MOD , " \033 O C" , 0 , + 1 , 0 } ,
{ XK_KP_Prior , XK_NO_MOD , " \033 [5~ " , 0 , 0 , 0 } ,
{ XK_KP_Home , XK_ANY_MOD , " \033 [H " , 0 , 0 , 0 } ,
{ XK_KP_Up , XK_ANY_MOD , " \033 Ox " , + 1 , 0 , 0 } ,
{ XK_KP_Up , XK_ANY_MOD , " \033 [ A" , 0 , - 1 , 0 } ,
{ XK_KP_Up , XK_ANY_MOD , " \033 OA " , 0 , + 1 , 0 } ,
{ XK_KP_Down , XK_ANY_MOD , " \033 Or " , + 1 , 0 , 0 } ,
{ XK_KP_Down , XK_ANY_MOD , " \033 [ B" , 0 , - 1 , 0 } ,
{ XK_KP_Down , XK_ANY_MOD , " \033 OB " , 0 , + 1 , 0 } ,
{ XK_KP_Left , XK_ANY_MOD , " \033 Ot " , + 1 , 0 , 0 } ,
{ XK_KP_Left , XK_ANY_MOD , " \033 [ D" , 0 , - 1 , 0 } ,
{ XK_KP_Left , XK_ANY_MOD , " \033 OD " , 0 , + 1 , 0 } ,
{ XK_KP_Right , XK_ANY_MOD , " \033 Ov " , + 1 , 0 , 0 } ,
{ XK_KP_Right , XK_ANY_MOD , " \033 [ C" , 0 , - 1 , 0 } ,
{ XK_KP_Right , XK_ANY_MOD , " \033 OC " , 0 , + 1 , 0 } ,
{ XK_KP_Prior , ShiftMask , " \033 [5;2~ " , 0 , 0 , 0 } ,
{ XK_KP_Begin , XK_NO_MOD , " \033 [E " , 0 , 0 , 0 } ,
{ XK_KP_End , XK_NO_MOD , " \033 [4~ " , 0 , 0 , 0 } ,
{ XK_KP_Prior , XK_ANY_MOD , " \033 [5~ " , 0 , 0 , 0 } ,
{ XK_KP_Begin , XK_ANY_MOD , " \033 [E " , 0 , 0 , 0 } ,
{ XK_KP_End , ShiftMask , " \033 [1;2F " , 0 , 0 , 0 } ,
{ XK_KP_Next , XK_NO_MOD , " \033 [6 ~ " , 0 , 0 , 0 } ,
{ XK_KP_End , XK_ANY_MOD , " \033 [4 ~ " , 0 , 0 , 0 } ,
{ XK_KP_Next , ShiftMask , " \033 [6;2~ " , 0 , 0 , 0 } ,
{ XK_KP_Insert , XK_NO_MOD , " \033 [2 ~ " , 0 , 0 , 0 } ,
{ XK_KP_Next , XK_ANY_MOD , " \033 [6 ~ " , 0 , 0 , 0 } ,
{ XK_KP_Insert , ShiftMask , " \033 [2;2~ " , 0 , 0 , 0 } ,
{ XK_KP_Delete , XK_NO_MOD , " \033 [3 ~ " , 0 , 0 , 0 } ,
{ XK_KP_Insert , XK_ANY_MOD , " \033 [2 ~ " , 0 , 0 , 0 } ,
{ XK_KP_Delete , ShiftMask , " \033 [3;2~ " , 0 , 0 , 0 } ,
{ XK_KP_Multiply , XK_NO_MOD , " \033 Oj " , + 1 , 0 , 0 } ,
{ XK_KP_Add , XK_NO_MOD , " \033 Ok " , + 1 , 0 , 0 } ,
{ XK_KP_Enter , XK_NO_MOD , " \033 OM " , + 1 , 0 , 0 } ,
{ XK_KP_Enter , XK_NO_MOD , " \n " , - 1 , 0 , - 1 } ,
{ XK_KP_Enter , XK_NO_MOD , " \r \n " , - 1 , 0 , 0 } ,
{ XK_KP_Subtract , XK_NO_MOD , " \033 Om " , + 1 , 0 , 0 } ,
{ XK_KP_Decimal , XK_NO_MOD , " \033 On " , + 1 , 0 , 0 } ,
{ XK_KP_Divide , XK_NO_MOD , " \033 Oo " , + 1 , 0 , 0 } ,
{ XK_KP_0 , XK_NO_MOD , " \033 Op " , + 1 , 0 , 0 } ,
{ XK_KP_1 , XK_NO_MOD , " \033 Oq " , + 1 , 0 , 0 } ,
{ XK_KP_2 , XK_NO_MOD , " \033 Or " , + 1 , 0 , 0 } ,
{ XK_KP_3 , XK_NO_MOD , " \033 Os " , + 1 , 0 , 0 } ,
{ XK_KP_4 , XK_NO_MOD , " \033 Ot " , + 1 , 0 , 0 } ,
{ XK_KP_5 , XK_NO_MOD , " \033 Ou " , + 1 , 0 , 0 } ,
{ XK_KP_6 , XK_NO_MOD , " \033 Ov " , + 1 , 0 , 0 } ,
{ XK_KP_7 , XK_NO_MOD , " \033 Ow " , + 1 , 0 , 0 } ,
{ XK_KP_8 , XK_NO_MOD , " \033 Ox " , + 1 , 0 , 0 } ,
{ XK_KP_9 , XK_NO_MOD , " \033 Oy " , + 1 , 0 , 0 } ,
{ XK_BackSpace , XK_NO_MOD , " \177 " , 0 , 0 , 0 } ,
{ XK_Up , XK_NO_MOD , " \033 [A " , 0 , - 1 , 0 } ,
{ XK_Up , XK_NO_MOD , " \033 OA " , 0 , + 1 , 0 } ,
{ XK_KP_Delete , XK_ANY_MOD , " \033 [3~ " , 0 , 0 , 0 } ,
{ XK_KP_Multiply , XK_ANY_MOD , " \033 Oj " , + 1 , 0 , 0 } ,
{ XK_KP_Add , XK_ANY_MOD , " \033 Ok " , + 1 , 0 , 0 } ,
{ XK_KP_Enter , XK_ANY_MOD , " \033 OM " , + 1 , 0 , 0 } ,
{ XK_KP_Enter , XK_ANY_MOD , " \n " , - 1 , 0 , + 1 } ,
{ XK_KP_Enter , XK_ANY_MOD , " \r \n " , - 1 , 0 , - 1 } ,
{ XK_KP_Subtract , XK_ANY_MOD , " \033 Om " , + 1 , 0 , 0 } ,
{ XK_KP_Decimal , XK_ANY_MOD , " \033 On " , + 1 , 0 , 0 } ,
{ XK_KP_Divide , XK_ANY_MOD , " \033 Oo " , + 1 , 0 , 0 } ,
{ XK_KP_0 , XK_ANY_MOD , " \033 Op " , + 1 , 0 , 0 } ,
{ XK_KP_1 , XK_ANY_MOD , " \033 Oq " , + 1 , 0 , 0 } ,
{ XK_KP_2 , XK_ANY_MOD , " \033 Or " , + 1 , 0 , 0 } ,
{ XK_KP_3 , XK_ANY_MOD , " \033 Os " , + 1 , 0 , 0 } ,
{ XK_KP_4 , XK_ANY_MOD , " \033 Ot " , + 1 , 0 , 0 } ,
{ XK_KP_5 , XK_ANY_MOD , " \033 Ou " , + 1 , 0 , 0 } ,
{ XK_KP_6 , XK_ANY_MOD , " \033 Ov " , + 1 , 0 , 0 } ,
{ XK_KP_7 , XK_ANY_MOD , " \033 Ow " , + 1 , 0 , 0 } ,
{ XK_KP_8 , XK_ANY_MOD , " \033 Ox " , + 1 , 0 , 0 } ,
{ XK_KP_9 , XK_ANY_MOD , " \033 Oy " , + 1 , 0 , 0 } ,
{ XK_BackSpace , XK_ANY_MOD , " \177 " , 0 , 0 , 0 } ,
{ XK_Up , ShiftMask , " \033 [1;2A " , 0 , 0 , 0 } ,
{ XK_Up , ControlMask , " \033 [1;5A " , 0 , 0 , 0 } ,
{ XK_Up , Mod1Mask , " \033 [1;3A " , 0 , 0 , 0 } ,
{ XK_Down , XK_NO_MOD , " \033 [B " , 0 , - 1 , 0 } ,
{ XK_Down , XK_NO_MOD , " \033 OB " , 0 , + 1 , 0 } ,
{ XK_Up , XK_ANY_MOD , " \033 [A " , 0 , - 1 , 0 } ,
{ XK_Up , XK_ANY_MOD , " \033 OA " , 0 , + 1 , 0 } ,
{ XK_Down , ShiftMask , " \033 [1;2B " , 0 , 0 , 0 } ,
{ XK_Down , ControlMask , " \033 [1;5B " , 0 , 0 , 0 } ,
{ XK_Down , Mod1Mask , " \033 [1;3B " , 0 , 0 , 0 } ,
{ XK_Left , XK_NO_MOD , " \033 [D " , 0 , - 1 , 0 } ,
{ XK_Left , XK_NO_MOD , " \033 OD " , 0 , + 1 , 0 } ,
{ XK_Down , XK_ANY_MOD , " \033 [B " , 0 , - 1 , 0 } ,
{ XK_Down , XK_ANY_MOD , " \033 OB " , 0 , + 1 , 0 } ,
{ XK_Left , ShiftMask , " \033 [1;2D " , 0 , 0 , 0 } ,
{ XK_Left , ControlMask , " \033 [1;5D " , 0 , 0 , 0 } ,
{ XK_Left , Mod1Mask , " \033 [1;3D " , 0 , 0 , 0 } ,
{ XK_Right , XK_NO_MOD , " \033 [C " , 0 , - 1 , 0 } ,
{ XK_Right , XK_NO_MOD , " \033 OC " , 0 , + 1 , 0 } ,
{ XK_Left , XK_ANY_MOD , " \033 [D " , 0 , - 1 , 0 } ,
{ XK_Left , XK_ANY_MOD , " \033 OD " , 0 , + 1 , 0 } ,
{ XK_Right , ShiftMask , " \033 [1;2C " , 0 , 0 , 0 } ,
{ XK_Right , ControlMask , " \033 [1;5C " , 0 , 0 , 0 } ,
{ XK_Right , Mod1Mask , " \033 [1;3C " , 0 , 0 , 0 } ,
{ XK_Right , XK_ANY_MOD , " \033 [C " , 0 , - 1 , 0 } ,
{ XK_Right , XK_ANY_MOD , " \033 OC " , 0 , + 1 , 0 } ,
{ XK_ISO_Left_Tab , ShiftMask , " \033 [Z " , 0 , 0 , 0 } ,
{ XK_Return , XK_NO_MOD , " \n " , 0 , 0 , - 1 } ,
{ XK_Return , XK_NO_MOD , " \r \n " , 0 , 0 , + 1 } ,
{ XK_Return , Mod1Mask , " \033 \n " , 0 , 0 , - 1 } ,
{ XK_Return , Mod1Mask , " \033 \r \n " , 0 , 0 , + 1 } ,
{ XK_Insert , XK_NO_MOD , " \033 [2~ " , 0 , 0 , 0 } ,
{ XK_Return , Mod1Mask , " \033 \n " , 0 , 0 , + 1 } ,
{ XK_Return , Mod1Mask , " \033 \r \n " , 0 , 0 , - 1 } ,
{ XK_Return , XK_ANY_MOD , " \n " , 0 , 0 , + 1 } ,
{ XK_Return , XK_ANY_MOD , " \r \n " , 0 , 0 , - 1 } ,
{ XK_Insert , ShiftMask , " \033 [2;2~ " , 0 , 0 , 0 } ,
{ XK_Delete , XK_NO_MOD , " \033 [3 ~ " , 0 , 0 , 0 } ,
{ XK_Insert , XK_ANY_MOD , " \033 [2 ~ " , 0 , 0 , 0 } ,
{ XK_Delete , ShiftMask , " \033 [3;2~ " , 0 , 0 , 0 } ,
{ XK_Home , XK_NO_MOD , " \033 [H " , 0 , 0 , 0 } ,
{ XK_Delete , XK_ANY_MOD , " \033 [3~ " , 0 , 0 , 0 } ,
{ XK_Home , ShiftMask , " \033 [1;2H " , 0 , 0 , 0 } ,
{ XK_End , XK_NO_MOD , " \033 [4~ " , 0 , 0 , 0 } ,
{ XK_Home , XK_ANY_MOD , " \033 [H " , 0 , 0 , 0 } ,
{ XK_End , ShiftMask , " \033 [1;2F " , 0 , 0 , 0 } ,
{ XK_End , XK_ANY_MOD , " \033 [4~ " , 0 , 0 , 0 } ,
{ XK_Prior , XK_NO_MOD , " \033 [5~ " , 0 , 0 , 0 } ,
{ XK_Next , XK_NO_MOD , " \033 [6~ " , 0 , 0 , 0 } ,
{ XK_Next , ShiftMask , " \033 [6;2~ " , 0 , 0 , 0 } ,
{ XK_Next , XK_ANY_MOD , " \033 [6~ " , 0 , 0 , 0 } ,
{ XK_F1 , XK_NO_MOD , " \033 OP " , 0 , 0 , 0 } ,
{ XK_F1 , /* F13 */ ShiftMask , " \033 [1;2P " , 0 , 0 , 0 } ,
{ XK_F1 , /* F25 */ ControlMask , " \033 [1;5P " , 0 , 0 , 0 } ,