@ -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 OA " , 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 OB " , 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 OD " , 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 OC " , 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 } ,