Mouse::Mouse(MadsM4Engine *vm) : _vm(vm) { _locked = false; _cursorOn = false; _cursor = NULL; _cursorSprites = NULL; resetMouse(); }
bool ApplePS2Mouse::start(IOService * provider) { DEBUG_LOG("%s::start called\n", getName()); // // The driver has been instructed to start. This is called after a // successful probe and match. // if (!super::start(provider)) return false; // // Maintain a pointer to and retain the provider object. // _device = (ApplePS2MouseDevice *)provider; _device->retain(); // // Reset and enable the mouse. // resetMouse(); // // Install our driver's interrupt handler, for asynchronous data delivery. // _device->installInterruptAction(this,OSMemberFunctionCast (PS2InterruptAction,this,&ApplePS2Mouse::interruptOccurred)); _interruptHandlerInstalled = true; // // Install our power control handler. // _device->installPowerControlAction( this,OSMemberFunctionCast (PS2PowerControlAction,this, &ApplePS2Mouse::setDevicePowerState) ); _powerControlHandlerInstalled = true; // // Install message hook for keyboard to trackpad communication // if (actliketrackpad) { _device->installMessageAction( this, OSMemberFunctionCast(PS2MessageAction, this, &ApplePS2Mouse::receiveMessage)); _messageHandlerInstalled = true; } return true; }
void ApplePS2Mouse::scheduleMouseReset() { // // Request the mouse to stop. A 0xF5 command is issued. // setMouseEnable(false); // // Reset the mouse (synchronous). // resetMouse(); }
bool ApplePS2Mouse::start(IOService * provider) { // // The driver has been instructed to start. This is called after a // successful probe and match. // if (!super::start(provider)) return false; // // Maintain a pointer to and retain the provider object. // _device = (ApplePS2MouseDevice *)provider; _device->retain(); // // Reset and enable the mouse. // resetMouse(); // // Install our driver's interrupt handler, for asynchronous data delivery. // _device->installInterruptAction(this, OSMemberFunctionCast(PS2InterruptAction, this, &ApplePS2Mouse::interruptOccurred)); _interruptHandlerInstalled = true; // // Install our power control handler. // _device->installPowerControlAction( this, OSMemberFunctionCast(PS2PowerControlAction, this, &ApplePS2Mouse::setDevicePowerState)); _powerControlHandlerInstalled = true; return true; }
bool ApplePS2Mouse::start(IOService * provider) { DEBUG_LOG("%s::start called\n", getName()); // // The driver has been instructed to start. This is called after a // successful probe and match. // if (!super::start(provider)) return false; // // Maintain a pointer to and retain the provider object. // _device = (ApplePS2MouseDevice *)provider; _device->retain(); // // Setup workloop with command gate for thread syncronization... // IOWorkLoop* pWorkLoop = getWorkLoop(); _cmdGate = IOCommandGate::commandGate(this); if (!pWorkLoop || !_cmdGate) { _device->release(); return false; } pWorkLoop->addEventSource(_cmdGate); // // Setup button timer event source // _buttonTimer = IOTimerEventSource::timerEventSource(this, OSMemberFunctionCast(IOTimerEventSource::Action, this, &ApplePS2Mouse::onButtonTimer)); if (_buttonTimer) pWorkLoop->addEventSource(_buttonTimer); // // Lock the controller during initialization // _device->lock(); // // Reset and enable the mouse. // resetMouse(); // // Install our driver's interrupt handler, for asynchronous data delivery. // _device->installInterruptAction(this, OSMemberFunctionCast(PS2InterruptAction, this, &ApplePS2Mouse::interruptOccurred), OSMemberFunctionCast(PS2PacketAction, this, &ApplePS2Mouse::packetReady)); _interruptHandlerInstalled = true; // now safe to allow other threads _device->unlock(); // // Install our power control handler. // _device->installPowerControlAction( this,OSMemberFunctionCast (PS2PowerControlAction,this, &ApplePS2Mouse::setDevicePowerState) ); _powerControlHandlerInstalled = true; // // Install message hook for keyboard to trackpad communication // if (actliketrackpad) { _device->installMessageAction( this, OSMemberFunctionCast(PS2MessageAction, this, &ApplePS2Mouse::receiveMessage)); _messageHandlerInstalled = true; } return true; }