case 0x0137: // prt sc/sys rq
keyCode = 0;
if (!goingDown)
break;
if (!checkModifierState(kMaskLeftControl))
{
// get current enabled status, and toggle it
bool enabled;
_device->dispatchMouseMessage(kPS2M_getDisableTouchpad, &enabled);
enabled = !enabled;
_device->dispatchMouseMessage(kPS2M_setDisableTouchpad, &enabled);
break;
}
// fall through
case 0x0127: // alternate for fnkeys toggle
keyCode = 0;
if (!goingDown)
break;
if (_fkeymodesupported)
{
// modify HIDFKeyMode via IOService... IOHIDSystem
if (IOService* service = IOService::waitForMatchingService(serviceMatching(kIOHIDSystem), 0))
{
const OSObject* num = OSNumber::withNumber(!_fkeymode, 32);
const OSString* key = OSString::withCString(kHIDFKeyMode);
if (num && key)
{
if (OSDictionary* dict = OSDictionary::withObjects(&num, &key, 1))
{
service->setProperties(dict);
dict->release();
}
}
OSSafeRelease(num);
OSSafeRelease(key);
service->release();
}
}
break;