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 */ }
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; }