bool Mega8Config::loadKeyboard(const wxString &profile) { bool isNew = _config->Exists(profile); wxString keyPath = wxEmptyString; wxString keyStr = wxEmptyString; wxAcceleratorEntry *ae = new wxAcceleratorEntry(); _hasJoystick = false; for (int i =0; i < 16; i++) { keyPath << wxT("Keys/") << profile << wxT("/") << i; keyStr = readString(keyPath); // If no default key config for this profile found if (keyStr == wxEmptyString) { // Take from General keyPath = wxEmptyString; keyPath << wxT("Keys/") << wxT("General") << wxT("/") << i; keyStr = readString(keyPath); } // Convert this string representation to keycode or joystick code if (keyStr.Left(3).Upper() != wxT("JOY")) { // Can keycode be converted to string ? try { ae->FromString(keyStr); } catch (int e) { wxMessageBox(_("This key cannot be converted by wxAcceleratorEntry.\nI will fall back to default key configuration."), _("Key not supported")); resetKeyboard(); return false; } // It's ok ? Are you sure ? if (!ae->IsOk()) { wxMessageBox(_("This key is not recognized.\nI will fall back to default key configuration."), _("Error reading key")); resetKeyboard(); return false; } _Keys[i] = ae->GetKeyCode(); } else { // Key joystick value _Keys[i] = Joysticks::getCodeFromString(keyStr); _hasJoystick = true; } keyPath = wxEmptyString; } delete ae; return isNew; }
void Mega8Config::resetConfig() { _currentProfile = wxT("General"); resetKeyboard(); // Graphic _LastFolder = wxEmptyString; setColorTheme(DEFAULT); setSound(true); setUseSleep(true); setFullScreen(false); setSpeedAuto(true); setDisplayHUD(false); setFiltered(false); setSyncClock(true); setFrequencyRatio(CHIP8, 4); setFrequencyRatio(CHIP8_HiRes, 4); setFrequencyRatio(CHIP8_HiRes2, 4); setFrequencyRatio(SCHIP8, 5); setFrequencyRatio(MCHIP8, 8); }
bool IOHIKeyboard::open(IOService * client, IOOptionBits options, KeyboardEventAction keAction, KeyboardSpecialEventAction kseAction, UpdateEventFlagsAction uefAction) { if ( (!_keyMap) && (!resetKeyboard())) return false; if (client == this) { KeyboardReserved *tempReservedStruct; tempReservedStruct = GetKeyboardReservedStructEventForService(this); return super::open((tempReservedStruct) ? tempReservedStruct->openClient : 0, options); } return open(client, options, 0, (KeyboardEventCallback)keAction, (KeyboardSpecialEventCallback)kseAction, (UpdateEventFlagsCallback)uefAction); }
void initProgram() { //------------------------ // start initializing crap //------------------------ defaultExceptionHandler(); // set up the exception handler powerON(POWER_ALL_2D); // turn on everything #ifndef DEBUG_MODE fb_init(); // initialize top screen video #else debugInit(); #endif bg_init(); // initialize bottom screen video setNewOrientation(ORIENTATION_0); // set up extra vram banks to be scratch memory vramSetBankE(VRAM_E_LCD); vramSetBankF(VRAM_F_LCD); vramSetBankG(VRAM_G_LCD); vramSetBankH(VRAM_H_LCD); vramSetBankI(VRAM_I_LCD); fb_setBGColor(30653); bg_setBGColor(0); drawStartSplash(); lcdMainOnTop(); // set fb to top screen fb_swapBuffers(); bg_swapBuffers(); // out of order for competition irqInit(); // initialize irqs irqSet(IRQ_VBLANK, startvBlank); irqEnable(IRQ_VBLANK); setMode(INITFAT); setSoundInterrupt(); // initialize fifo irq setGenericSound(11025, 127, 64, 1); waitForInit(); // wait until arm7 has loaded and gone to sleep initComplexSound(); // initialize sound variables initWifi(); fixGautami(); setCursorProperties(0, 2, 0, 0); initCapture(); initClipboard(); // set defaults to english in case we can't load the langauge file for // some reason also takes care of partial translations. initLanguage(); initRandomList(); fixAndTags(); resetKeyboard(); setDate(); if(!DRAGON_InitFiles()) { // oops, no cf card! setMode(DISPLAYCOW); setFont(font_arial_11); setColor(0xFFFF); bg_dispSprite(96, 5, errmsg, 0); bg_setClipping(5,25,250,181); bg_dispString(0,0,l_nofat); bg_swapBuffers(); while(1) { // wee, la la la! // More or less, we aren't going to do nothing here } } //-------------------------------------------------------------------- //finished init, now check to make sure the DSOrganize dir is there... //-------------------------------------------------------------------- findDataDirectory(); makeDirectories(); if(DRAGON_FileExists("DSOrganize") != FE_DIR) { setMode(DISPLAYCOW); // oops, not there, we must create! DRAGON_mkdir("DSOrganize"); DRAGON_chdir("DSOrganize"); DRAGON_mkdir("DAY"); DRAGON_mkdir("HELP"); DRAGON_mkdir("LANG"); DRAGON_mkdir("RESOURCES"); DRAGON_mkdir("REMINDER"); DRAGON_mkdir("SCRIBBLE"); DRAGON_mkdir("TODO"); DRAGON_mkdir("VCARD"); DRAGON_mkdir("ICONS"); DRAGON_mkdir("CACHE"); DRAGON_mkdir("COOKIES"); DRAGON_mkdir("HOME"); DRAGON_chdir("/"); makeDefaultSettings(); setFont(font_arial_11); setColor(0xFFFF); bg_dispSprite(96, 5, errmsg, 0); bg_setClipping(5,25,250,181); bg_dispString(0,0, l_createdir); bg_swapBuffers(); while(!keysDown()) { scanKeys(); } } setMode(INITPLUGIN); //------------------------------------------------------------------- //finished creating dirs, now check to make sure if they extracted it //did their extracting program actually get all the dirs? //------------------------------------------------------------------- DRAGON_chdir(d_base); if(DRAGON_FileExists("Day") != FE_DIR) { DRAGON_mkdir("DAY"); } if(DRAGON_FileExists("Help") != FE_DIR) { DRAGON_mkdir("HELP"); } if(DRAGON_FileExists("Lang") != FE_DIR) { DRAGON_mkdir("LANG"); } if(DRAGON_FileExists("Reminder") != FE_DIR) { DRAGON_mkdir("REMINDER"); } if(DRAGON_FileExists("Scribble") != FE_DIR) { DRAGON_mkdir("SCRIBBLE"); } if(DRAGON_FileExists("Todo") != FE_DIR) { DRAGON_mkdir("TODO"); } if(DRAGON_FileExists("VCard") != FE_DIR) { DRAGON_mkdir("VCARD"); } if(DRAGON_FileExists("Icons") != FE_DIR) { DRAGON_mkdir("ICONS"); } if(DRAGON_FileExists("Cache") != FE_DIR) { DRAGON_mkdir("CACHE"); } if(DRAGON_FileExists("Cookies") != FE_DIR) { DRAGON_mkdir("COOKIES"); } if(DRAGON_FileExists("Home") != FE_DIR) { DRAGON_mkdir("HOME"); } DRAGON_chdir("/"); //------------------------------------------- //how about we load the settings for them eh? //------------------------------------------- loadSettings(); DRAGON_chdir(d_base); if(DRAGON_FileExists("startup.wav") == FE_FILE) { char tStr[256]; sprintf(tStr, "%sstartup.wav", d_base); loadWavToMemory(); loadSound(tStr); } DRAGON_chdir("/"); initStartScreen(); irqSet(IRQ_VBLANK, vBlank); fb_setBGColor(genericFillColor); bg_setBGColor(genericFillColor); }
IOReturn IOHIKeyboard::setParamProperties( OSDictionary * dict ) { OSData * data = NULL; OSNumber * number = NULL; IOReturn err = kIOReturnSuccess; IOReturn err2 = kIOReturnSuccess; unsigned char * map = NULL; IOHIKeyboardMapper * oldMap = NULL; bool updated = false; UInt64 nano; if( dict->getObject(kIOHIDResetKeyboardKey)) resetKeyboard(); IOLockLock( _deviceLock); if ((number = OSDynamicCast(OSNumber, dict->getObject(kIOHIDKeyRepeatKey))) || (data = OSDynamicCast(OSData, dict->getObject(kIOHIDKeyRepeatKey)))) { nano = (number) ? number->unsigned64BitValue() : *((UInt64 *) (data->getBytesNoCopy())); if( nano < EV_MINKEYREPEAT) nano = EV_MINKEYREPEAT; nanoseconds_to_absolutetime(nano, &_keyRepeat); updated = true; } if ((number = OSDynamicCast(OSNumber, dict->getObject(kIOHIDInitialKeyRepeatKey))) || (data = OSDynamicCast(OSData, dict->getObject(kIOHIDInitialKeyRepeatKey)))) { nano = (number) ? number->unsigned64BitValue() : *((UInt64 *) (data->getBytesNoCopy())); if( nano < EV_MINKEYREPEAT) nano = EV_MINKEYREPEAT; nanoseconds_to_absolutetime(nano, &_initialKeyRepeat); updated = true; } if( (data = OSDynamicCast( OSData, dict->getObject(kIOHIDKeyMappingKey)))) { map = (unsigned char *)IOMalloc( data->getLength() ); bcopy( data->getBytesNoCopy(), map, data->getLength() ); oldMap = _keyMap; _keyMap = IOHIKeyboardMapper::keyboardMapper(this, map, data->getLength(), true); if (_keyMap) { // point the new keymap to the IOHIDSystem, so it can set properties in it _keyMap->setKeyboardTarget((IOService *) _keyboardEventTarget); if (oldMap) oldMap->release(); updated = true; } else { _keyMap = oldMap; err = kIOReturnBadArgument; } } if (NULL != (number = OSDynamicCast(OSNumber, dict->getObject(kIOHIDSubinterfaceIDKey)))) { _deviceType = number->unsigned32BitValue(); updated = true; } // give the keymap a chance to update to new properties if (_keyMap) err2 = _keyMap->setParamProperties(dict); IOLockUnlock( _deviceLock); if( updated ) updateProperties(); // we can only return one error if (err == kIOReturnSuccess) err = err2; return( err == kIOReturnSuccess ) ? super::setParamProperties(dict) : err; }