PlatformKeyboardEvent::PlatformKeyboardEvent(BalEventKey* event) : m_type(KeyDown) , m_autoRepeat(false) , m_windowsVirtualKeyCode(ConvertAmigaKeyToVirtualKey(event)) , m_isKeypad(event->Qualifier & IEQUALIFIER_NUMERICPAD) , m_shiftKey(event->Qualifier & (IEQUALIFIER_LSHIFT | IEQUALIFIER_RSHIFT)) , m_ctrlKey(event->Qualifier & IEQUALIFIER_CONTROL) , m_altKey(event->Qualifier & (IEQUALIFIER_LALT | IEQUALIFIER_RALT)) , m_metaKey(event->Qualifier & (IEQUALIFIER_LCOMMAND | IEQUALIFIER_RCOMMAND)) , m_balEventKey(event) { UChar aSrc[2]; if (IDCMP_RAWKEY == event->Class) { if (event->Code & IECODE_UP_PREFIX) m_type = KeyUp; aSrc[0] = 0; } else aSrc[0] = local2unicode(event->Code); aSrc[1] = 0; WebCore::String aText(aSrc); WebCore::String aUnmodifiedText(aSrc); WebCore::String aKeyIdentifier = keyIdentifierForAmigaKeyCode(event); m_text = aText; m_unmodifiedText = aUnmodifiedText; m_keyIdentifier = aKeyIdentifier; }
static WebCore::String keyIdentifierForAmigaKeyCode(struct IntuiMessage *im) { if (IDCMP_RAWKEY == im->Class) { switch (im->Code & ~IECODE_UP_PREFIX) { case RAWKEY_TAB: return "U+0009"; break; case RAWKEY_INSERT: return "Insert"; break; case RAWKEY_PAGEUP: return "PageUp"; break; case RAWKEY_PAGEDOWN: return "PageDown"; break; case RAWKEY_F11: return "F11"; break; case RAWKEY_CRSRUP: return "Up"; break; case RAWKEY_CRSRDOWN: return "Down"; break; case RAWKEY_CRSRRIGHT: return "Right"; break; case RAWKEY_CRSRLEFT: return "Left"; break; case RAWKEY_F1: return "F1"; break; case RAWKEY_F2: return "F2"; break; case RAWKEY_F3: return "F3"; break; case RAWKEY_F4: return "F4"; break; case RAWKEY_F5: return "F5"; break; case RAWKEY_F6: return "F6"; break; case RAWKEY_F7: return "F7"; break; case RAWKEY_F8: return "F8"; break; case RAWKEY_F9: return "F9"; break; case RAWKEY_F10: return "F10"; break; case RAWKEY_HELP: return "Help"; break; case RAWKEY_LALT: return "Alt"; break; case RAWKEY_RALT: return "Alt"; break; case RAWKEY_MENU: return "Alt"; break; case RAWKEY_BREAK: return "Pause"; break; case RAWKEY_F12: return "F12"; break; case RAWKEY_HOME: return "Home"; break; case RAWKEY_END: return "End"; break; default: return "U+0000"; break; } } else { switch (im->Code) { case 13: return "Enter"; break; default: { bool bMeta = im->Qualifier & (IEQUALIFIER_LCOMMAND | IEQUALIFIER_RCOMMAND); if (bMeta && 'a' == im->Code) return "U+0001"; else if (bMeta && 'c' == im->Code) return "U+0003"; else if (bMeta && 'v' == im->Code) return "U+0016"; else if (bMeta && 'x' == im->Code) return "U+0018"; else return WebCore::String::format("U+%04X", WTF::Unicode::toUpper(local2unicode(im->Code))); } break; } } }
void CFlashPlayerDlg::LoadConfig() { CAtlStdioFile playercfg; CString inifile = m_program_dir + _T("mplayer.ini"); if(SUCCEEDED(playercfg.OpenFile(inifile.GetBuffer(), GENERIC_READ, FILE_SHARE_READ, OPEN_EXISTING))) { CStringA lineA; CString line; while(playercfg.ReadLineA(lineA)) { line = local2unicode(lineA.GetBuffer()).c_str(); lineA.ReleaseBuffer(); line.TrimLeft(_T(" ")); line.TrimRight(_T(" ")); line.MakeLower(); if(line.Find(_T("#")) == 0) continue; if(line.Find(_T("fs=yes")) == 0) { m_fs_init = true; continue; } if(line.Find(_T("fs=1")) == 0) { m_fs_init = true; continue; } if(line.Find(_T("ontop=2")) == 0) { m_ontop = true; continue; } if(line.Find(_T("ontop=1")) == 0) { m_ontop = true; continue; } } playercfg.Close(); } inifile.ReleaseBuffer(); CAtlStdioFile inputcfg; inifile = m_program_dir + _T("input.ini"); if(SUCCEEDED(inputcfg.OpenFile(inifile.GetBuffer(), GENERIC_READ, FILE_SHARE_READ, OPEN_EXISTING))) { CString line,command,value,key; CStringA lineA; while(inputcfg.ReadLineA(lineA)) { line = local2unicode(lineA.GetBuffer()).c_str(); lineA.ReleaseBuffer(); if(AnalyseLine(line,key,command,value)) m_inputs.Add(key,command,value); } inputcfg.Close(); } else { m_inputs.Add(_T("F"),_T("vo_fullscreen"),_T("")); m_inputs.Add(_T("f"),_T("vo_fullscreen"),_T("")); m_inputs.Add(_T("T"),_T("vo_ontop"),_T("")); m_inputs.Add(_T("t"),_T("vo_ontop"),_T("")); m_inputs.Add(_T("RIGHT"),_T("seek"),_T("30")); m_inputs.Add(_T("LEFT"),_T("seek"),_T("-30")); m_inputs.Add(_T("DOWN"),_T("seek"),_T("10")); m_inputs.Add(_T("UP"),_T("seek"),_T("-10")); m_inputs.Add(_T("SPACE"),_T("pause"),_T("")); m_inputs.Add(_T("ESC"),_T("quit"),_T("")); m_inputs.Add(_T("K"),_T("keep_aspect"),_T("")); m_inputs.Add(_T("k"),_T("keep_aspect"),_T("")); m_inputs.Add(_T(">"),_T("pt_step"),_T("1")); m_inputs.Add(_T("."),_T("pt_step"),_T("1")); m_inputs.Add(_T("<"),_T("pt_step"),_T("-1")); m_inputs.Add(_T(","),_T("pt_step"),_T("-1")); } }