コード例 #1
0
ファイル: rcinput.c プロジェクト: ChakaZulu/tuxbox_apps
void		RcGetActCode( void )
{
	int				x=0;
	unsigned short	code = 0;
	static  unsigned short cw=0;
#if defined HAVE_DREAMBOX_HARDWARE || defined HAVE_IPBOX_HARDWARE
	char buf[32];
	if ( fd != -1 )
		x = read( fd, buf, 32 );
	if ( x < 2 )
	{
		realcode=0xee;
		if  ( cw == 1 )
			cw = 0;
		return;
	}
	x -= 2;
	memcpy(&code,buf+x,2);
	if (!drop && !keyboard)
	{
		drop = 1;
		return;
	}
	code=translate(code);
	realcode=code;
	if ( code == 0xee )
	{
		drop = 0;
		return;
	}
#else
	struct input_event ev;

	if ( fd != -1 ) {

		do {

			x = read(fd, &ev, sizeof(struct input_event));

			if ((x == sizeof(struct input_event)) && ((ev.value == 1)||(ev.value == 2)))
				break;

		} while (x == sizeof(struct input_event));

	}

	if ( x % sizeof(struct input_event) )
	{
		//KbGetActCode();
		realcode=0xee;
		return;
	}

	Debug("%d bytes from FB received ...\n",x);

	realcode=code=ev.code;

	Debug("code=%04x\n",code);
#endif

	if ( cw == 2 )
	{
		actcode=code;
		return;
	}

	switch(code)
	{
#if 0
	case RC_HELP:
		if ( !cw )
			FBPrintScreen();
		cw=1;
		break;
#endif
	case RC_SPKR:
		if ( !cw )
		{
			cw=2;
			FBPause();
			cw=0;
		}
		break;
	case RC_HOME:
		doexit=3;
		break;
#ifdef HAVE_DBOX_HARDWARE
	case KEY_1:
		actcode = 1;
		break;
	case KEY_2:
		actcode = 2;
		break;
	case KEY_3:
		actcode = 3;
		break;
	case KEY_4:
		actcode = 4;
		break;
	case KEY_5:
		actcode = 5;
		break;
	case KEY_6:
		actcode = 6;
		break;
	case KEY_7:
		actcode = 7;
		break;
	case KEY_8:
		actcode = 8;
		break;
	case KEY_9:
		actcode = 9;
		break;
	case KEY_0:
		actcode = 0;
		break;
#endif
#if 0
	case RC_UP:
	case RC_DOWN:
	case RC_RIGHT:
	case RC_LEFT:
	case RC_OK:
#endif
	default :
		cw=0;
		actcode=code;
		break;
	}

	return;
}
コード例 #2
0
ファイル: rcinput.c プロジェクト: ChakaZulu/tuxbox_apps
void		KbGetActCode( void )
{
	unsigned char	buf[256];
	int				x=0;
	int				left;
	unsigned short	code = 0;
	unsigned char	*p = buf;

	realcode=0xee;

	if ( kbfd != -1 )
		x = read(kbfd,buf,256);
	if ( x>0 )
	{
		for(p=buf, left=x; left; left--,p++)
		{
			switch(*p)
			{
			case 0x1b :
				if ( left >= 3 )
				{
					p+=2;
					code = kb_translate(*p);
					if ( code )
						actcode = code;
					left-=2;
				}
				else
					left=1;
				break;
			case 0x03 :
				doexit=3;
				break;
			case 0x0d :
				actcode=RC_OK;
				break;
#if 0
			case 0x1c :
				FBPrintScreen();
				break;
#endif
			case '?' :
				actcode=RC_HELP;
				break;
			case 'b' :
				actcode=RC_BLUE;
				break;
			case 'r' :
				actcode=RC_RED;
				break;
			case 'g' :
				actcode=RC_GREEN;
				break;
			case 'y' :
				actcode=RC_YELLOW;
				break;
			case '0' :
			case '1' :
			case '2' :
			case '3' :
			case '4' :
			case '5' :
			case '6' :
			case '7' :
			case '8' :
			case '9' :
				actcode=*p-48;
				break;
			case '-' :
				actcode=RC_MINUS;
				break;
			case '+' :
				actcode=RC_PLUS;
				break;
			case 'q' :
				actcode=RC_SPKR;
				FBPause();
				break;
			}
		}
		realcode=actcode;
	}
}
コード例 #3
0
void CTable::HandleKeysPressed()
{
	static bool	HelpOnScreen = false;
	static bool	MenuOnScreen = false;

	timeval	tv;

	tv.tv_sec = 0;
	tv.tv_usec = 60000;
	select( 0, 0, 0, 0, &tv );		/* 60ms pause */

	RcGetActCode();

	if( realcode == 0xee ) return;

	if( true == HelpOnScreen )
	{
		FBCopyImage( 0, 0, WIDTH, HEIGHT, BBGetData() );
#if defined(HAVE_SPARK_HARDWARE) || defined(HAVE_DUCKBOX_HARDWARE)
		FBFlushGrafic();
#endif
		HelpOnScreen = false;
		return;
	}

	switch( actcode )
	{
		case RC_0 :

			ChangeSelection( false );
			changed[ act_slot ] = true;
			changed[ BLOCK ] = true;
			act_slot = BLOCK;
			ChangeSelection( );


			break;
		case RC_1 :

			ChangeSelection( false );
			changed[ act_slot ] = true;
			changed[ TABLEAU1 ] = true;
			act_slot = TABLEAU1;
			ChangeSelection( true, false );

			break;
		case RC_2 :
			ChangeSelection( false );
			changed[ act_slot ] = true;
			changed[ TABLEAU2 ] = true;
			act_slot = TABLEAU2;
			ChangeSelection( true, false );

			break;
		case RC_3 :
			ChangeSelection( false );
			changed[ act_slot ] = true;
			changed[ TABLEAU3 ] = true;
			act_slot = TABLEAU3;
			ChangeSelection( true, false );

			break;
		case RC_4 :
			ChangeSelection( false );
			changed[ act_slot ] = true;
			changed[ TABLEAU4 ] = true;
			act_slot = TABLEAU4;
			ChangeSelection( true, false );

			break;
		case RC_5 :
			ChangeSelection( false );
			changed[ act_slot ] = true;
			changed[ TABLEAU5 ] = true;
			act_slot = TABLEAU5;
			ChangeSelection( true, false );

			break;
		case RC_6 :
			ChangeSelection( false );
			changed[ act_slot ] = true;
			changed[ TABLEAU6 ] = true;
			act_slot = TABLEAU6;
			ChangeSelection( true, false );

			break;
		case RC_7 :
			ChangeSelection( false );
			changed[ act_slot ] = true;
			changed[ TABLEAU7 ] = true;
			act_slot = TABLEAU7;
			ChangeSelection( true, false );

			break;
		case RC_8 :

			break;
		case RC_9 :

			break;
		case RC_RIGHT :
			this->MoveCursor( 2 );
			break;
		case RC_LEFT :
			this->MoveCursor( 0 );
			break;
		case RC_UP :
			this->MoveCursor( 1 );
			break;
		case RC_DOWN :
			this->MoveCursor( 3 );
			break;
		case RC_OK :
			this->DoAction();
			break;
		case RC_SPKR :
			break;

		case RC_STANDBY :

			break;
		case RC_GREEN :

			break;
		case RC_YELLOW :
			FBPrintScreen();
			break;
		case RC_RED	 :
			this->Init();
#if defined(HAVE_SPARK_HARDWARE) || defined(HAVE_DUCKBOX_HARDWARE)
			FBFlushGrafic();
#endif
			break;
		case RC_BLUE :
			Wizard();
#if defined(HAVE_SPARK_HARDWARE) || defined(HAVE_DUCKBOX_HARDWARE)
			FBFlushGrafic();
#endif
			break;
		case RC_PLUS :
			changed[ act_slot ] = true;
			ChangeSelection( true, false );
			break;
		case RC_MINUS :
			changed[ act_slot ] = true;
			ChangeSelection( false, false );
			break;
		case RC_HELP :

			this->ShowHelp();
#if defined(HAVE_SPARK_HARDWARE) || defined(HAVE_DUCKBOX_HARDWARE)
			FBFlushGrafic();
#endif
			HelpOnScreen = true;

			break;
		case RC_SETUP :
			if( this->Setup() )
				this->Init();
			FBCopyImage( 0, 0, WIDTH, HEIGHT, BBGetData() );
#if defined(HAVE_SPARK_HARDWARE) || defined(HAVE_DUCKBOX_HARDWARE)
			FBFlushGrafic();
#endif
			break;
		case RC_HOME :


			break;
		case RC_PAGE_DOWN :

			break;
		case RC_PAGE_UP :

			break;

		default:
//
			return;

			break;
	}

this->Display();

actcode = 0;

}