// <testing>
AxWin3_RichText_SetLineCount(gMainWindow, 3);
AxWin3_RichText_SendLine(gMainWindow, 0, "First line!");
- AxWin3_RichText_SendLine(gMainWindow, 2, "Third line! \x01""ff0000A red");
+ AxWin3_RichText_SendLine(gMainWindow, 2, "Third line! \1ff0000A red");
// </testing>
+ Display_Init(80, 25, 100);
AxWin3_ResizeWindow(gMainWindow, 80*8, 25*16);
AxWin3_MoveWindow(gMainWindow, 20, 50);
AxWin3_ShowWindow(gMainWindow, 1);
{
_SysDebug("Activity on child stdout");
// Read and update screen
- char buf[32];
+ char buf[128];
int len = _SysRead(giChildStdout, buf, sizeof(buf));
if( len <= 0 ) break;
static int ctrl_state = 0;
// Handle modifiers
- #define _bitset(var,bit,set) do{if(set)var|=1<<(bit);else var&=1<<(bit);}while(0)
+ #define _bitset(var,bit,set) do{if(set)var|=1<<(bit);else var&=~(1<<(bit));}while(0)
switch(KeySym)
{
case KEYSYM_LEFTCTRL:
- _bitset(ctrl_state, 0, bPress);
+ _bitset(ctrl_state, 0, bPress!=0);
return 0;
case KEYSYM_RIGHTCTRL:
- _bitset(ctrl_state, 0, bPress);
+ _bitset(ctrl_state, 1, bPress!=0);
return 0;
}
#undef _bitset
if( ctrl_state && KeySym >= KEYSYM_a && KeySym <= KEYSYM_z )
{
Translated = KeySym - KEYSYM_a + 1;
+ _SysDebug("Ctrl-%c: KS %x => Trans %x", 'A'+(KeySym-KEYSYM_a), KeySym, Translated);
}
- if( Translated )
+ // == 2 :: FIRE
+ if( bPress == 2 )
{
- char buf[6];
- int len;
-
- // Encode and send
- len = WriteUTF8(buf, Translated);
-
- _SysWrite(giChildStdin, buf, len);
+ if( Translated )
+ {
+ char buf[6];
+ int len;
+
+ // Encode and send
+ len = WriteUTF8(buf, Translated);
+
+ _SysDebug("Keystroke %x:%x translated to '%.*s'", KeySym, Translated, len, buf);
+ _SysWrite(giChildStdin, buf, len);
+
+ return 0;
+ }
- return 0;
- }
-
- // No translation, look for escape sequences to send
- const char *str = NULL;
- switch(KeySym)
- {
- case KEYSYM_LEFTARROW:
- str = "\x1b[D";
- break;
- }
- if( str )
- {
- _SysWrite(giChildStdin, str, strlen(str));
+ // No translation, look for escape sequences to send
+ const char *str = NULL;
+ switch(KeySym)
+ {
+ case KEYSYM_LEFTARROW:
+ str = "\x1b[D";
+ break;
+ }
+ if( str )
+ {
+ _SysWrite(giChildStdin, str, strlen(str));
+ }
}
return 0;
}
Display_AddText(-esc_len, Buf + ofs);
esc_len = -esc_len;
}
- Len -= esc_len;
ofs += esc_len;
+ //_SysDebug("Len = %i, ofs = %i", Len, ofs);
}
Display_Flush();