Esempio n. 1
0
Word BURGERCALL InputSetState(Word NewState)
{
	MacInput_t *LocalPtr;
	LocalPtr = &MacInputLocals;
	if (LocalPtr->InputSprocketInited) {
		if (LocalPtr->InputSprocketActive) {
			if (!NewState) {
				MacLastKeyDown = 0;
				KeyboardFlush();
				LocalPtr->InputSprocketActive = FALSE;	/* Kill IRQ */
				ISpSuspend();			/* Shut down services */
				KeyboardFlush();
				FlushEvents(everyEvent,0);
			}
			return TRUE;					/* Previous state was active */
		}
		if (NewState) {
			MacLastKeyDown = 0;
			KeyboardFlush();
			FlushEvents(everyEvent,0);
			if (!ISpResume()) {				/* Resume services */
				LocalPtr->InputSprocketActive = TRUE;		/* Allow IRQ */
			}
			KeyboardFlush();
			MacLastKeyDown = 0;
		}
	}
	return FALSE;				/* Previous state was inactive */
}
Esempio n. 2
0
File: vbl.c Progetto: DrItanium/moo
void set_keyboard_controller_status(
	boolean active)
{
#ifdef SUPPORT_INPUT_SPROCKET
	long int itr;
#endif

	// if already set then drop out
	if (input_task_active == active) { return; }

	input_task_active= active;
#ifdef SUPPORT_INPUT_SPROCKET
	if (use_input_sprocket)
	{
		for(itr = 0; itr < NUMBER_OF_INPUT_SPROCKET_NEEDS; itr++)
		{
			ISpElement_Flush(input_sprocket_elements[itr]);
		}
		
		active ? (void) ISpResume() : (void) ISpSuspend();
	}
#endif
	return;
}