Пример #1
0
static void
input_task(void *arg)
{
	unsigned char scode;
	unsigned ch;

	while (true)
	{
		if ( !GetMsgQueue(scan_mq, &scode) )
			continue;

		/* Perform make/break processing. */
		if ( (ch = make_break(scode)) == NONE )
			continue;

		if (1 <= ch && ch <= 0xFF)
			/* A normal character. */
			PutMsgQueue(key_mq, &ch);
		else if (HOME <= ch && ch <= INSRT)
		{
			/* An ASCII escape sequence generated by the numeric pad. */
			unsigned c = ESC;
			PutMsgQueue(key_mq, &c);
			c = '[';
			PutMsgQueue(key_mq, &c);
			c = numpad_map[ch - HOME];
			PutMsgQueue(key_mq, &c);
		}
		else
		{
			// Aquí deberían procesarse teclas especiales de procesamiento
			// inmediato como Fn, Alt-Fn, etc.
		}
	}
}
Пример #2
0
static void
input_task(void *arg){
    unsigned char scode;
    unsigned ch;
	int tty_num=-1;

    while (true)
    {
	tty_num=-1;
        if ( !GetMsgQueue(scan_mq, &scode) )
            continue;

        /* Perform make/break processing. */
        if ( (ch = make_break(scode)) == NONE )
            continue;

        if (1 <= ch && ch <= 0xFF)
            /* A normal character. */
            PutMsgQueue(key_mq, &ch);
        else if (HOME <= ch && ch <= INSRT)
        {
            /* An ASCII escape sequence generated by the numeric pad. */
            unsigned c = ESC;
            PutMsgQueue(key_mq, &c);
            c = '[';
            PutMsgQueue(key_mq, &c);
            c = numpad_map[ch - HOME];
            PutMsgQueue(key_mq, &c);
        }else{
            // Aquí deberían procesarse teclas especiales de procesamiento
            // inmediato como Fn, Alt-Fn, etc.
            switch( ch ){
                case AF1:
                    tty_num = 0;
                    break;
                case AF2:
                    tty_num = 1;
                    break;
                case AF3:
                    tty_num = 2;
                    break;
                case AF4:
                    tty_num = 3;
                    break;
            }
            if(tty_num != -1){
                clearAllTabs();
                turnOnOFFTab(ON, tty_num+1);
                 turnOffMouse();
                switch_focus(tty_num);
                turnOnMouse();
            }
        }
    }
}