Example #1
0
// Translates a key and sends it
void SendKey(TKeyCode aCode, TUint aModifiers) {

    char buf[16];

    // Reset scrollback
    seen_key_event = 1;

    // Interrupt paste
    term_nopaste();

    // Try to translate as a control character
    int xbytes = TranslateKey(aCode, aModifiers, buf);
    assert(xbytes < 16);
    if ( xbytes > 0 ) {
        // Send control key codes as is
        ldisc_send(buf, xbytes, 1);
        
    } else if ( xbytes == -1 ) {
        // Not translated, probably a normal letter
        if ( aCode < ENonCharacterKeyBase ) {
            wchar_t wc = (wchar_t) aCode;
            luni_send(&wc, 1, 1);
        }
    }
}
Example #2
0
void lpage_send(void *handle,
		int codepage, char *buf, int len, int interactive)
{
    Ldisc ldisc = (Ldisc)handle;
    wchar_t *widebuffer = 0;
    int widesize = 0;
    int wclen;

    if (codepage < 0) {
	ldisc_send(ldisc, buf, len, interactive);
	return;
    }

    widesize = len * 2;
    widebuffer = snewn(widesize, wchar_t);

    wclen = mb_to_wc(codepage, 0, buf, len, widebuffer, widesize);
    luni_send(ldisc, widebuffer, wclen, interactive);

    sfree(widebuffer);
}