HRESULT STDMETHODCALLTYPE AccessibleBase::get_accKeyboardShortcut(VARIANT vChild, BSTR* shortcut) { if (!shortcut) return E_POINTER; *shortcut = 0; AccessibilityObject* childObj; HRESULT hr = getAccessibilityObjectForChild(vChild, childObj); if (FAILED(hr)) return hr; String accessKey = childObj->accessKey(); if (accessKey.isNull()) return S_FALSE; static String accessKeyModifiers; if (accessKeyModifiers.isNull()) { unsigned modifiers = EventHandler::accessKeyModifiers(); // Follow the same order as Mozilla MSAA implementation: // Ctrl+Alt+Shift+Meta+key. MSDN states that keyboard shortcut strings // should not be localized and defines the separator as "+". if (modifiers & PlatformKeyboardEvent::CtrlKey) accessKeyModifiers += "Ctrl+"; if (modifiers & PlatformKeyboardEvent::AltKey) accessKeyModifiers += "Alt+"; if (modifiers & PlatformKeyboardEvent::ShiftKey) accessKeyModifiers += "Shift+"; if (modifiers & PlatformKeyboardEvent::MetaKey) accessKeyModifiers += "Win+"; } *shortcut = BString(accessKeyModifiers + accessKey).release(); return S_OK; }
static const gchar* webkitAccessibleHyperlinkActionGetKeybinding(AtkAction* action, gint index) { g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE_HYPERLINK(action), 0); g_return_val_if_fail(WEBKIT_ACCESSIBLE_HYPERLINK(action)->priv->hyperlinkImpl, 0); g_return_val_if_fail(!index, 0); if (!ATK_IS_ACTION(WEBKIT_ACCESSIBLE_HYPERLINK(action)->priv->hyperlinkImpl)) return 0; AccessibilityObject* coreObject = core(action); if (!coreObject) return 0; return returnString(coreObject->accessKey().string()); }
static const gchar* webkitAccessibleHyperlinkActionGetKeybinding(AtkAction* action, gint index) { g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE_HYPERLINK(action), 0); g_return_val_if_fail(!index, 0); WebKitAccessibleHyperlinkPrivate* priv = WEBKIT_ACCESSIBLE_HYPERLINK(action)->priv; g_return_val_if_fail(priv->hyperlinkImpl, 0); if (!ATK_IS_ACTION(priv->hyperlinkImpl)) return 0; AccessibilityObject* coreObject = core(action); if (!coreObject) return 0; priv->actionKeyBinding = coreObject->accessKey().string().utf8(); return priv->actionKeyBinding.data(); }