本文整理汇总了C++中WebKeyboardEvent::setKeyIdentifierFromWindowsKeyCode方法的典型用法代码示例。如果您正苦于以下问题:C++ WebKeyboardEvent::setKeyIdentifierFromWindowsKeyCode方法的具体用法?C++ WebKeyboardEvent::setKeyIdentifierFromWindowsKeyCode怎么用?C++ WebKeyboardEvent::setKeyIdentifierFromWindowsKeyCode使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WebKeyboardEvent
的用法示例。
在下文中一共展示了WebKeyboardEvent::setKeyIdentifierFromWindowsKeyCode方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: keyboardEvent
WebKeyboardEvent WebInputEventFactory::keyboardEvent(HWND hwnd, UINT message,
WPARAM wparam, LPARAM lparam)
{
WebKeyboardEvent result;
// TODO(pkasting): http://b/1117926 Are we guaranteed that the message that
// GetMessageTime() refers to is the same one that we're passed in? Perhaps
// one of the construction parameters should be the time passed by the
// caller, who would know for sure.
result.timeStampSeconds = GetMessageTime() / 1000.0;
result.windowsKeyCode = result.nativeKeyCode = static_cast<int>(wparam);
switch (message) {
case WM_SYSKEYDOWN:
result.isSystemKey = true;
case WM_KEYDOWN:
result.type = WebInputEvent::RawKeyDown;
break;
case WM_SYSKEYUP:
result.isSystemKey = true;
case WM_KEYUP:
result.type = WebInputEvent::KeyUp;
break;
case WM_IME_CHAR:
result.type = WebInputEvent::Char;
break;
case WM_SYSCHAR:
result.isSystemKey = true;
result.type = WebInputEvent::Char;
case WM_CHAR:
result.type = WebInputEvent::Char;
break;
default:
ASSERT_NOT_REACHED();
}
if (result.type == WebInputEvent::Char || result.type == WebInputEvent::RawKeyDown) {
result.text[0] = result.windowsKeyCode;
result.unmodifiedText[0] = result.windowsKeyCode;
}
if (result.type != WebInputEvent::Char)
result.setKeyIdentifierFromWindowsKeyCode();
if (GetKeyState(VK_SHIFT) & 0x8000)
result.modifiers |= WebInputEvent::ShiftKey;
if (GetKeyState(VK_CONTROL) & 0x8000)
result.modifiers |= WebInputEvent::ControlKey;
if (GetKeyState(VK_MENU) & 0x8000)
result.modifiers |= WebInputEvent::AltKey;
// NOTE: There doesn't seem to be a way to query the mouse button state in
// this case.
if (LOWORD(lparam) > 1)
result.modifiers |= WebInputEvent::IsAutoRepeat;
if (isKeyPad(wparam, lparam))
result.modifiers |= WebInputEvent::IsKeyPad;
return result;
}
示例2: keyboardEvent
WebKeyboardEvent WebInputEventFactory::keyboardEvent(WebInputEvent::Type type,
int modifiers,
double timeStampSeconds,
int keycode,
WebUChar unicodeCharacter,
bool isSystemKey)
{
WebKeyboardEvent result;
result.type = type;
result.modifiers = modifiers;
result.timeStampSeconds = timeStampSeconds;
int windowsKeyCode = WebCore::windowsKeyCodeForKeyEvent(keycode);
result.windowsKeyCode = WebKeyboardEvent::windowsKeyCodeWithoutLocation(windowsKeyCode);
result.modifiers |= WebKeyboardEvent::locationModifiersFromWindowsKeyCode(windowsKeyCode);
result.nativeKeyCode = keycode;
result.unmodifiedText[0] = unicodeCharacter;
if (result.windowsKeyCode == WebCore::VKEY_RETURN) {
// This is the same behavior as GTK:
// We need to treat the enter key as a key press of character \r. This
// is apparently just how webkit handles it and what it expects.
result.unmodifiedText[0] = '\r';
}
result.text[0] = result.unmodifiedText[0];
result.setKeyIdentifierFromWindowsKeyCode();
result.isSystemKey = isSystemKey;
return result;
}
示例3: keyboardEvent
WebKeyboardEvent WebInputEventFactory::keyboardEvent(const GdkEventKey* event)
{
WebKeyboardEvent result;
result.timeStampSeconds = gdkEventTimeToWebEventTime(event->time);
result.modifiers = gdkStateToWebEventModifiers(normalizeEventState(event));
switch (event->type) {
case GDK_KEY_RELEASE:
result.type = WebInputEvent::KeyUp;
break;
case GDK_KEY_PRESS:
result.type = WebInputEvent::RawKeyDown;
break;
default:
ASSERT_NOT_REACHED();
}
// According to MSDN:
// http://msdn.microsoft.com/en-us/library/ms646286(VS.85).aspx
// Key events with Alt modifier and F10 are system key events.
// We just emulate this behavior. It's necessary to prevent webkit from
// processing keypress event generated by alt-d, etc.
// F10 is not special on Linux, so don't treat it as system key.
if (result.modifiers & WebInputEvent::AltKey)
result.isSystemKey = true;
// The key code tells us which physical key was pressed (for example, the
// A key went down or up). It does not determine whether A should be lower
// or upper case. This is what text does, which should be the keyval.
int windowsKeyCode = gdkEventToWindowsKeyCode(event);
result.windowsKeyCode = WebKeyboardEvent::windowsKeyCodeWithoutLocation(windowsKeyCode);
result.modifiers |= WebKeyboardEvent::locationModifiersFromWindowsKeyCode(windowsKeyCode);
result.nativeKeyCode = event->hardware_keycode;
if (result.windowsKeyCode == WebCore::VKEY_RETURN)
// We need to treat the enter key as a key press of character \r. This
// is apparently just how webkit handles it and what it expects.
result.unmodifiedText[0] = '\r';
else
// FIXME: fix for non BMP chars
result.unmodifiedText[0] =
static_cast<WebUChar>(gdk_keyval_to_unicode(event->keyval));
// If ctrl key is pressed down, then control character shall be input.
if (result.modifiers & WebInputEvent::ControlKey)
result.text[0] = getControlCharacter(
result.windowsKeyCode, result.modifiers & WebInputEvent::ShiftKey);
else
result.text[0] = result.unmodifiedText[0];
result.setKeyIdentifierFromWindowsKeyCode();
// FIXME: Do we need to set IsAutoRepeat?
if (isKeyPadKeyval(event->keyval))
result.modifiers |= WebInputEvent::IsKeyPad;
return result;
}
示例4: setComposition
void TextInputController::setComposition(const CppArgumentList& arguments, CppVariant* result)
{
result->setNull();
if (arguments.size() < 1)
return;
// Sends a keydown event with key code = 0xE5 to emulate input method behavior.
WebKeyboardEvent keyDown;
keyDown.type = WebInputEvent::RawKeyDown;
keyDown.modifiers = 0;
keyDown.windowsKeyCode = 0xE5; // VKEY_PROCESSKEY
keyDown.setKeyIdentifierFromWindowsKeyCode();
m_webView->handleInputEvent(keyDown);
WebVector<WebCompositionUnderline> underlines;
WebString text(WebString::fromUTF8(arguments[0].toString()));
m_webView->setComposition(text, underlines, 0, text.length());
}