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;
        }
    }
}
Example #3
0
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"));
	}
}