Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add UnhandledKeyPressed.md #3859

Open
wants to merge 12 commits into
base: api-UnhandledKeyPressed
Choose a base branch
from
Prev Previous commit
Next Next commit
fix typo
zhuhaichao518 authored Oct 10, 2023
commit f2131a32163ec637fb0251627597c3b33792c743
8 changes: 6 additions & 2 deletions specs/UnhandledKeyPressed.md
Original file line number Diff line number Diff line change
@@ -3,8 +3,9 @@
Consumers of the old [WebBrowser](https://learn.microsoft.com/en-us/dotnet/api/system.windows.controls.webbrowser?view=windowsdesktop-7.0) control that relied on the [OnKeyDown](https://learn.microsoft.com/previous-versions/aa752133(v=vs.85)) API that allowed them to receive and handle key events not handled by the browser, [requested](https://github.com/MicrosoftEdge/WebViewFeedback/issues/468) same ability in WebView2.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please limit line lengths to 80 or 100 characters.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The OnKeyDown links to IWebBrowser2::Navigate. Is it supposed to link to an OnKeyDown page?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My mistake. Fixed it.


# Description
The `UnhandledKeyPressed` event allows developers to subscribe event handlers
to be run when a key event is not handled by the browser (including DOM and browser accelerators). It can be triggered by all keys, which is different from [AcceleratorKeyPressed](https://learn.microsoft.com/en-us/dotnet/api/microsoft.web.webview2.core.corewebview2acceleratorkeypressedeventargs?view=webview2-dotnet-1.0.705.50) event.
The `UnhandledKeyPressed` event allows developers to subscribe event handlers to be run when a key event is not handled by the browser (including DOM and browser accelerators).

`UnhandledKeyPressed` event can be triggered by all keys, which is different from [AcceleratorKeyPressed](https://learn.microsoft.com/en-us/dotnet/api/microsoft.web.webview2.core.corewebview2acceleratorkeypressedeventargs?view=webview2-dotnet-1.0.705.50) event.

`UnhandledKeyPressed` event is async, which means 'GetKeyStates' does not return the exact key state when the key event is fired. Use `UnhandledKeyPressedEventArgs.Modifiers` instead to verify whether Ctrl or Alt is down in this situation.

@@ -83,6 +84,8 @@ void CoreWebView2Controller_UnhandledKeyPressed(object sender, CoreWebView2Unhan
```

# API Details

## Win32 C++
```idl
[uuid(053b9a5d-7033-4515-9898-912977d2fde8), object, pointer_default(unique)]
interface ICoreWebView2Controller : IUnknown {
@@ -191,6 +194,7 @@ typedef enum COREWEBVIEW2_KEY_PRESSED_FLAG_KIND {
} COREWEBVIEW2_KEY_PRESSED_FLAG_KIND;
```

## .NET and WinRT
```c#
namespace Microsoft.Web.WebView2.Core
{