Page MenuHomePhabricator

Cannot type in Korean using Mozilla on Windows 7 with dual-script keyboard
Closed, ResolvedPublic1 Estimated Story Points

Description

Kdammers is running the current version of Mozilla on Windows 7 with a dual-script keyboard. Typing in Hangul (한글) is not working in VisualEditor: letters can be removed but when they are typed, they just disappear.

Stefan2 did some related testing:

Ibus-hangul (Korean) seems to work correctly in Firefox 32.0. In Chromium 37.0.2062.94, it produces spaces instead of Hangul letters. However, if a syllable only consists of two letters, the syllable shows up after typing in the second letter. It seems that syllables consisting of more than two letters can't be typed in using Chromium.

Anthy (Japanese) is broken in both browsers.

See Also: T52631: VisualEditor: CE eats up syllables except a last syllable of a word in Korean IME

Related Objects

Event Timeline

bzimport raised the priority of this task from to Medium.Nov 22 2014, 3:45 AM
bzimport set Reference to bz70353.

This is probably a dupe of bug 50631, but leaving it open.

What is "the current version of Mozilla"? Firefox? Seamonkey?

Exactly same problem of bug 50631. This should be merge into 50631.

Are we sure? Bug 50631 can get something. I believe that this user can't get anything.

When I tried to do test for bug 50631 on [[en:User:Hym411/VETest]] (second line), I got this bug. bug 50631 at least returns some result - though it's full of errors - but this gives some nonsense.

Test envorinment: Win7, Google Chrome version 37.0.2062.120 m

Hi, typing phonetically with Nalgaeset keyboard seems to work for me on Windows 8, Firefox 40.0.3 (and also Chrome 45.0.2454.99 m), both on en.wikipedia.org and on VE-standalone master.

Can we close this, or is anyone still seeing corruption?

I can reproduce this. Win 7, 64bit, (I don't know what IME I'm using but default IME for Korean in Windows). Firefox Version 41.0.

Step to reproduce

  1. Go to https://ko.wikipedia.org/wiki/%EC%82%AC%EC%9A%A9%EC%9E%90:Gisado/VEtest?veaction=edit
  2. Type enter twice.
  3. Try to type 가나다

Expected result

가나다 shows up below 가나다라마바사아자차카파타하., like this.

1가나다마라마바사아자차카파타하
2
3가나다

Result bug

Two enters magically removed, and two s are put after 가나다라마바사아자차카파타하, like:

1가나다마라마바사아자차카파타하ㅏㅏ

Hi, unfortunately I can't reproduce the problem. (I guess it may depend on the IME version, which is very common). So to help us debug this, could you help us by sending the event log when you type '가나다' on your platform?

  1. Go to https://rawgit.com/wikimedia/VisualEditor/master/demos/ve/eventLogger.html
  2. Click 'Start Logging Keyboard Events'
  3. Type the text (i.e. just press 'rkskek' - don't press any other key)
  4. Click on the big box full of debug info
  5. Copy the text with the mouse
  6. Paste into a file and attach the file to this bug

Thanks very much!

Here you are. P2090 for English and P2091 for Korean.

1[
2 {"imeIdentifier":"","userAgent":"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0","startDom":""},
3 {"seq":0,"time":6.357,"action":"sendEvent","args":["keydown",{"keyCode":82}]},
4 {"seq":1,"time":6.362,"action":"sendEvent","args":["keypress",{"keyCode":0}]},
5 {"seq":2,"time":6.363,"action":"changeText","args":["r"]},
6 {"seq":3,"time":6.363,"action":"changeSel","args":[1,1]},
7 {"seq":4,"time":6.363,"action":"sendEvent","args":["input",{}]},
8 {"seq":5,"time":6.367,"action":"endLoop","args":[]},
9 {"seq":6,"time":6.42,"action":"sendEvent","args":["keydown",{"keyCode":75}]},
10 {"seq":7,"time":6.421,"action":"sendEvent","args":["keypress",{"keyCode":0}]},
11 {"seq":8,"time":6.422,"action":"changeText","args":["rk"]},
12 {"seq":9,"time":6.422,"action":"changeSel","args":[2,2]},
13 {"seq":10,"time":6.422,"action":"sendEvent","args":["input",{}]},
14 {"seq":11,"time":6.424,"action":"endLoop","args":[]},
15 {"seq":12,"time":6.478,"action":"sendEvent","args":["keyup",{"keyCode":82}]},
16 {"seq":13,"time":6.481,"action":"endLoop","args":[]},
17 {"seq":14,"time":6.522,"action":"sendEvent","args":["keyup",{"keyCode":75}]},
18 {"seq":15,"time":6.523,"action":"endLoop","args":[]},
19 {"seq":16,"time":6.564,"action":"sendEvent","args":["keydown",{"keyCode":83}]},
20 {"seq":17,"time":6.565,"action":"sendEvent","args":["keypress",{"keyCode":0}]},
21 {"seq":18,"time":6.566,"action":"changeText","args":["rks"]},
22 {"seq":19,"time":6.566,"action":"changeSel","args":[3,3]},
23 {"seq":20,"time":6.566,"action":"sendEvent","args":["input",{}]},
24 {"seq":21,"time":6.571,"action":"endLoop","args":[]},
25 {"seq":22,"time":6.689,"action":"sendEvent","args":["keydown",{"keyCode":75}]},
26 {"seq":23,"time":6.691,"action":"sendEvent","args":["keypress",{"keyCode":0}]},
27 {"seq":24,"time":6.692,"action":"changeText","args":["rksk"]},
28 {"seq":25,"time":6.692,"action":"changeSel","args":[4,4]},
29 {"seq":26,"time":6.692,"action":"sendEvent","args":["input",{}]},
30 {"seq":27,"time":6.695,"action":"sendEvent","args":["keyup",{"keyCode":83}]},
31 {"seq":28,"time":6.697,"action":"sendEvent","args":["keydown",{"keyCode":69}]},
32 {"seq":29,"time":6.698,"action":"sendEvent","args":["keypress",{"keyCode":0}]},
33 {"seq":30,"time":6.699,"action":"changeText","args":["rkske"]},
34 {"seq":31,"time":6.699,"action":"changeSel","args":[5,5]},
35 {"seq":32,"time":6.699,"action":"sendEvent","args":["input",{}]},
36 {"seq":33,"time":6.703,"action":"endLoop","args":[]},
37 {"seq":34,"time":6.71,"action":"sendEvent","args":["keyup",{"keyCode":75}]},
38 {"seq":35,"time":6.712,"action":"endLoop","args":[]},
39 {"seq":36,"time":6.8,"action":"sendEvent","args":["keyup",{"keyCode":69}]},
40 {"seq":37,"time":6.806,"action":"endLoop","args":[]},
41 {"seq":38,"time":6.861,"action":"sendEvent","args":["keydown",{"keyCode":75}]},
42 {"seq":39,"time":6.862,"action":"sendEvent","args":["keypress",{"keyCode":0}]},
43 {"seq":40,"time":6.864,"action":"changeText","args":["rkskek"]},
44 {"seq":41,"time":6.864,"action":"changeSel","args":[6,6]},
45 {"seq":42,"time":6.864,"action":"sendEvent","args":["input",{}]},
46 {"seq":43,"time":6.873,"action":"endLoop","args":[]},
47 {"seq":44,"time":6.908,"action":"sendEvent","args":["keyup",{"keyCode":75}]},
48 {"seq":45,"time":6.951,"action":"endLoop","args":[]}
49]

1[
2 {"imeIdentifier":"","userAgent":"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0","startDom":""},
3 {"seq":0,"time":1.777,"action":"sendEvent","args":["compositionstart",{}]},
4 {"seq":1,"time":1.778,"action":"changeText","args":["ㄱ"]},
5 {"seq":2,"time":1.778,"action":"changeSel","args":[1,1]},
6 {"seq":3,"time":1.778,"action":"sendEvent","args":["compositionend",{}]},
7 {"seq":4,"time":1.78,"action":"sendEvent","args":["input",{}]},
8 {"seq":5,"time":1.78,"action":"changeSel","args":[0,1]},
9 {"seq":6,"time":1.78,"action":"sendEvent","args":["compositionstart",{}]},
10 {"seq":7,"time":1.782,"action":"changeSel","args":[1,1]},
11 {"seq":8,"time":1.782,"action":"sendEvent","args":["input",{}]},
12 {"seq":9,"time":1.783,"action":"endLoop","args":[]},
13 {"seq":10,"time":1.865,"action":"changeText","args":["가"]},
14 {"seq":11,"time":1.865,"action":"sendEvent","args":["input",{}]},
15 {"seq":12,"time":1.867,"action":"endLoop","args":[]},
16 {"seq":13,"time":1.977,"action":"changeText","args":["간"]},
17 {"seq":14,"time":1.977,"action":"sendEvent","args":["input",{}]},
18 {"seq":15,"time":1.979,"action":"endLoop","args":[]},
19 {"seq":16,"time":2.089,"action":"changeText","args":["가"]},
20 {"seq":17,"time":2.089,"action":"sendEvent","args":["input",{}]},
21 {"seq":18,"time":2.091,"action":"sendEvent","args":["compositionend",{}]},
22 {"seq":19,"time":2.092,"action":"sendEvent","args":["input",{}]},
23 {"seq":20,"time":2.093,"action":"sendEvent","args":["compositionstart",{}]},
24 {"seq":21,"time":2.094,"action":"sendEvent","args":["input",{}]},
25 {"seq":22,"time":2.095,"action":"sendEvent","args":["compositionend",{}]},
26 {"seq":23,"time":2.096,"action":"sendEvent","args":["input",{}]},
27 {"seq":24,"time":2.097,"action":"sendEvent","args":["compositionstart",{}]},
28 {"seq":25,"time":2.099,"action":"changeText","args":["가나"]},
29 {"seq":26,"time":2.099,"action":"sendEvent","args":["compositionend",{}]},
30 {"seq":27,"time":2.101,"action":"sendEvent","args":["input",{}]},
31 {"seq":28,"time":2.102,"action":"changeSel","args":[0,2]},
32 {"seq":29,"time":2.102,"action":"sendEvent","args":["compositionstart",{}]},
33 {"seq":30,"time":2.105,"action":"changeSel","args":[1,1]},
34 {"seq":31,"time":2.105,"action":"sendEvent","args":["input",{}]},
35 {"seq":32,"time":2.112,"action":"endLoop","args":[]},
36 {"seq":33,"time":2.181,"action":"changeText","args":["가낟"]},
37 {"seq":34,"time":2.181,"action":"sendEvent","args":["input",{}]},
38 {"seq":35,"time":2.186,"action":"endLoop","args":[]},
39 {"seq":36,"time":2.257,"action":"changeText","args":["가나"]},
40 {"seq":37,"time":2.257,"action":"sendEvent","args":["input",{}]},
41 {"seq":38,"time":2.26,"action":"sendEvent","args":["compositionend",{}]},
42 {"seq":39,"time":2.262,"action":"sendEvent","args":["input",{}]},
43 {"seq":40,"time":2.265,"action":"sendEvent","args":["compositionstart",{}]},
44 {"seq":41,"time":2.266,"action":"sendEvent","args":["input",{}]},
45 {"seq":42,"time":2.268,"action":"sendEvent","args":["compositionend",{}]},
46 {"seq":43,"time":2.27,"action":"sendEvent","args":["input",{}]},
47 {"seq":44,"time":2.272,"action":"changeSel","args":[2,2]},
48 {"seq":45,"time":2.272,"action":"sendEvent","args":["compositionstart",{}]},
49 {"seq":46,"time":2.277,"action":"changeText","args":["가나다"]},
50 {"seq":47,"time":2.277,"action":"changeSel","args":[1,1]},
51 {"seq":48,"time":2.277,"action":"sendEvent","args":["compositionend",{}]},
52 {"seq":49,"time":2.281,"action":"sendEvent","args":["input",{}]},
53 {"seq":50,"time":2.283,"action":"changeSel","args":[0,3]},
54 {"seq":51,"time":2.283,"action":"sendEvent","args":["compositionstart",{}]},
55 {"seq":52,"time":2.286,"action":"changeSel","args":[1,1]},
56 {"seq":53,"time":2.286,"action":"sendEvent","args":["input",{}]},
57 {"seq":54,"time":2.296,"action":"endLoop","args":[]},
58 {"seq":55,"time":3.889,"action":"sendEvent","args":["input",{}]},
59 {"seq":56,"time":3.892,"action":"sendEvent","args":["compositionend",{}]},
60 {"seq":57,"time":3.947,"action":"sendEvent","args":["input",{}]},
61 {"seq":58,"time":3.95,"action":"sendEvent","args":["compositionstart",{}]},
62 {"seq":59,"time":3.953,"action":"sendEvent","args":["input",{}]},
63 {"seq":60,"time":3.955,"action":"sendEvent","args":["compositionend",{}]},
64 {"seq":61,"time":3.957,"action":"sendEvent","args":["input",{}]},
65 {"seq":62,"time":3.995,"action":"endLoop","args":[]}
66]

Thanks for the event log!

That's on Chrome 45 right? Are you seeing the issue in Chrome too? It seems to work correctly for me in Chrome on Windows 8, and I get an essentially identical event log, so I'm confident our IMEs are essentially the same :-)

Could you also provide a log created on Firefox? Thanks!

I can reproduce similar symptoms on IE on Windows 8. It can be reproduced by pressing Enter then 'ㄱ', which triggers the issue in T91244 . Perhaps the Firefox on Windows 7 issue is essentially the same; if you provide a log I will confirm.

Change 241124 had a related patch set uploaded (by Divec):
Ignore slugs and chimeras when preventing identical re-renderings

https://gerrit.wikimedia.org/r/241124

Change 241124 merged by jenkins-bot:
Ignore slugs and chimeras when preventing identical re-renderings

https://gerrit.wikimedia.org/r/241124

Thanks for the event log!

That's on Chrome 45 right? Are you seeing the issue in Chrome too? It seems to work correctly for me in Chrome on Windows 8, and I get an essentially identical event log, so I'm confident our IMEs are essentially the same :-)

Could you also provide a log created on Firefox? Thanks!

Oh well, my bad. I was proven stupid. New log will be uploaded later tomorrow or Monday. (since it's Chuseok )

Jdforrester-WMF renamed this task from VisualEditor: Cannot type in Korean using Mozilla on Windows 7 with dual-script keyboard to Cannot type in Korean using Mozilla on Windows 7 with dual-script keyboard.Sep 26 2015, 2:27 PM
Jdforrester-WMF assigned this task to dchan.
Jdforrester-WMF edited a custom field.

Is this now resolved?

I haven't got any time to sit in front of the desk, run FF, verify whether
this is fixed (in this case I will close the bug as I did on T52631) or not
(in this case I will provide additional debug information as requested by
@dchan.) Since dchan cannot reproduce the bug, it seems that I am the SPoF.

It's national holiday in Korea and I'm currently at a house without any
computer. So, please wait until I can touch computers ;)

OK, @dchan I updated the P2090 and P2091 to FF info.

Also, @Jdforrester-WMF I still can reproduce this.

Hello, does it now work correctly on http://deployment.wikimedia.beta.wmflabs.org/wiki/Korea?veaction=edit ? It works for me there with IE/Windows 8 .

@revi, Thanks for the updated log for Firefox!

Typed 가나다 in the page.

It makes newline (I thought like I typed enter.) and then 가나다. When I clicked the first line, it just don't let me write there and wrote my 가 at the newline.

So, more graphically.

what I did:
My browser is in this stage;

|(cursor)

type 가나다 now.

what I expected:

가나다|(cursor)

what I get:

(empty line)
가나다|(cursor)

At this stage, further "enter" command does not work, and I am stuck in that particular line.

If I try to put the words on empty line...

|
가나다

then it becomes...

(empty)
가|가나다

Really weird, isn't it?

OS: Win 7, Browser: FireFox 41.0.

Change 247800 had a related patch set uploaded (by Divec):
Diff richtext to build model changes

https://gerrit.wikimedia.org/r/247800

I have optimistically tagged this bug in change 247800, because it will fix many DOM/DM synchronization errors, and I suspect that is the underlying cause of the symptoms @revi reports above.

Change 247800 merged by jenkins-bot:
Diff richtext to build model changes

https://gerrit.wikimedia.org/r/247800

Jdforrester-WMF claimed this task.

OK, @revi, any chance you could re-check http://deployment.wikimedia.beta.wmflabs.org/wiki/Korea?veaction=edit ? If I type 'ganada' into my Korean IME I get 가나다 correctly. However, T120156: Uncommitted Korean IME candidate text ignored when user presses enter, causing CE/DM desync in Firefox is a horrible bug but I think a distinct blocker from this one. Provisionally re-closing.

revi reopened this task as Open.EditedDec 9 2015, 9:57 AM

Nope., It's still happening, in different form now.


Current status of Korea page

(| means cursor)

가나다라마바사아자차카파타하|

After I put two enters,

가나다라마바사아자차카파타하

|

And now I put the word "치킨".

Expected behavior

가나다라마바사아자차카파타하

치킨|

Actual Behavior

가나다라마바사아자차카파타하치킨|

// blank lines still there, phabricator doesn't recognize blank lines...

OS: Win7, 64bit, MS default IME, UserAgent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0 See also P2386.