Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(305)

Unified Diff: webkit/api/public/WebInputEvent.h

Issue 150206: Implement the NSTextInput protocol.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/common/native_web_keyboard_event_mac.mm ('k') | webkit/api/public/mac/WebInputEventFactory.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/api/public/WebInputEvent.h
===================================================================
--- webkit/api/public/WebInputEvent.h (revision 22136)
+++ webkit/api/public/WebInputEvent.h (working copy)
@@ -55,18 +55,29 @@
, modifiers(0)
, timeStampSeconds(0.0) { }
- // There are two schemes used for keyboard input. On Windows (and,
- // interestingly enough, on Mac Carbon) there are two events for a
- // keypress. One is a raw keydown, which provides the keycode only.
- // If the app doesn't handle that, then the system runs key translation
- // to create an event containing the generated character and pumps that
- // event. In such a scheme, those two events are translated to
- // RAW_KEY_DOWN and CHAR events respectively. In Cocoa and Gtk, key
- // events contain both the keycode and any translation into actual
- // text. In such a case, WebCore will eventually need to split the
- // events (see disambiguateKeyDownEvent and its callers) but we don't
- // worry about that here. We just use a different type (KEY_DOWN) to
- // indicate this.
+ // When we use an input method (or an input method editor), we receive
+ // two events for a keypress. The former event is a keydown, which
+ // provides a keycode, and the latter is a textinput, which provides
+ // a character processed by an input method. (The mapping from a
+ // keycode to a character code is not trivial for non-English
+ // keyboards.)
+ // To support input methods, Safari sends keydown events to WebKit for
+ // filtering. WebKit sends filtered keydown events back to Safari,
+ // which sends them to input methods.
+ // Unfortunately, it is hard to apply this design to Chrome because of
+ // our multiprocess architecture. An input method is running in a
+ // browser process. On the other hand, WebKit is running in a renderer
+ // process. So, this design results in increasing IPC messages.
+ // To support input methods without increasing IPC messages, Chrome
+ // handles keyboard events in a browser process and send asynchronous
+ // input events (to be translated to DOM events) to a renderer
+ // process.
+ // This design is mostly the same as the one of Windows and Mac Carbon.
+ // So, for what it's worth, our Linux and Mac front-ends emulate our
+ // Windows front-end. To emulate our Windows front-end, we can share
+ // our back-end code among Windows, Linux, and Mac.
+ // TODO(hbono): Issue 18064: remove the KeyDown type since it isn't
+ // used in Chrome any longer.
enum Type {
Undefined = -1,
Property changes on: webkit/api/public/WebInputEvent.h
___________________________________________________________________
Name: svn:eol-style
+ LF
« no previous file with comments | « chrome/common/native_web_keyboard_event_mac.mm ('k') | webkit/api/public/mac/WebInputEventFactory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698