On 27/05/2014 01:52 , Ben Peters wrote:
From: Robin Berjon [mailto:ro...@w3.org] On 23/05/2014 01:23 , Ben
Peters wrote:
As I said I am unsure that the way in which composition events
are described in DOM 3 Events is perfect, but that's only
because I haven't used them in anger and they aren't supported
much.

My thought is that we can use CommandEvent with
type="insertText". This would be the corollary to
execComamnd("insertText"), and the data would be the ñ that is
about to be inserted.

But if you only get one event you can't render the composition as
it is carrying out.

I believe Composition Events are very important for IME input, but we
should fire CommandEvent with Insert text for all text input,
including IME. Are you saying we should use Composition Events even
for non-IME input?

I am not using an IME, and yet I could not type in French on my keyboard without composition.

Obviously, if I switch to Kotoeri input, I'll get composition *and* an IME popup. But for regular French input (in a US keyboard) I need:

  é -> Alt-E, E
  è -> Alt-`, E
  à -> Alt-`, A
  ô -> Alt-I, O
  ü -> Alt-U, U
  ñ -> Alt-˜, N (for the occasional Spanish)
  (and a bunch more)

Some older apps (you pretty much can't find them anymore) used to not display the composition as it was ongoing and only show the text after composition had terminated. That was survivable but annoying, and it only worked because composition in Latin-script languages is pretty trivial (except perhaps for all you Livonian speakers out there!), but I don't think it would be viable for more complex compositions. And even in simple cases it would confuse users to be typing characters with no rendering feedback.

Without composition events you can't render the ongoing composition. See what's going on at:


https://gist.github.com/darobin/8a128f05106d0e02717b#file-twitter-html-L81

That is basically inserting text in a range that's decorated to be underlined to show composition in progress. Composition updates *replace* the text in the range. And at the end the range is removed and text is inserted.

The above is for Mac, but I have distant memories of using something similar on Windows called the "US International Keyboard" where you could have apostrophes compose as accents, etc.. I don't recall how it was rendered though.

--
Robin Berjon - http://berjon.com/ - @robinberjon

Reply via email to