[TC 8.0b5 x64] Quick search is broken in Korean.

Bug reports will be moved here when the described bug has been fixed

Moderators: Hacker, petermad, Stefan2, white

sheppaul
Member
Member
Posts: 134
Joined: 2003-12-05, 07:59 UTC

[TC 8.0b5 x64] Quick search is broken in Korean.

Post by *sheppaul »

[TC 8.0b5 x64] Quick search is broken in Korean.

1. Quick search is broken in Korean.
x64 version doesn't work correctly quick search(Korean).

please see a capture movie file.
http://www.mediafire.com/?jkd374q0z7bg1e3 or http://www.multiupload.com/P1SA4VEKDX

32bit is OK.

2. Quick search dialog does not pop up instantly with korean search.

Used option: Letters - with search dialog

When starting search with english characters, there is an instant action. But when I change the keyborad to Korean and start to trying quick search, there is no search dialog with a first keystroke: no instant action of search. A small IME box intercepts a first keystroke and waits for additional input. I really hope this can be fixed.

refer to the following video file. 7.56a is used as 8.0b5 is broken.

http://www.mediafire.com/?v4fy9kiuw4k43vr

explanation of the video: tried to search in english. Then, changed keyboard to Korean and tried to search in Korean. 'ㄱ'-input should work instantly. TCMD does not show an immediate reaction with quick search of Korean. I'm not sure it's because of Keyboard change (or IME?).
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 50400
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Unfortunately I don't know enough about Korean to handle this problem. Does this work correcly with TC 7.56a? What about 8.0b5 32-bit?
Author of Total Commander
https://www.ghisler.com
sheppaul
Member
Member
Posts: 134
Joined: 2003-12-05, 07:59 UTC

Post by *sheppaul »

Does this work correcly with TC 7.56a? What about 8.0b5 32-bit?
Quick search works except for 8.0b5 64bit.

Other than this, there has been a problem from the beginning. In that reason, the function is not that much useful. Quick is not really quick.

I'll find someone who can explain about this if possibe. I believe it can be fixed, as I've seen it work in other file managers.
Only using TCMD x64. :)
User avatar
Samuel
Power Member
Power Member
Posts: 1930
Joined: 2003-08-29, 15:44 UTC
Location: Germany, Brandenburg an der Havel
Contact:

Post by *Samuel »

ghisler(Author) wrote:Unfortunately I don't know enough about Korean to handle this problem. Does this work correcly with TC 7.56a? What about 8.0b5 32-bit?
I'm German, but perhaps I can help a little.
From this source I got some nice overview:
- chars consist of 2 or 3 parts
- they can be constructed with an English keyboard (an IME translates the parts to chars)
- if it gets only the first part ("ㅇ") it results to char "ㅇ", if it also gets the second part ("ㅏ") then "ㅇ" is transformed to "아". And with the third part ("ㄴ") "아" is transformed to the char "안".

Problem 1)
The control seems not to accept the composed letters. Perhaps the problem is the empty list. (TC prevents the search result to be empty.) But in this language only the final letter "안" is in the filename while the letter "안" has to be composed with its parts over "ㅇ" and "아".

My new "Korean QSX x32-version" will make matchings like this possible.

Workaround:
You can use the current "QSX x64-version". (also the non Korean version will do) It has a setting to allow input leading to an empty list.
You could also try to create some files with the chars used between ("ㅇ" and "아") to prevent the list to be empty.

Does this "fix" it?

Problem 2)
The IME seems to catch the input right before TC gets it. There should be a setting/flag for the filelist to prevent the IME open an external window. (if it really works in TC x32 ???)
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 50400
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

2Samuel
Unfortunately I still don't know what I should do - bot 32-bit and 64-bit version use the same code to forbid search strings, but it works with 32-bit but not with 64-bit! Any ideas?
Author of Total Commander
https://www.ghisler.com
User avatar
Samuel
Power Member
Power Member
Posts: 1930
Joined: 2003-08-29, 15:44 UTC
Location: Germany, Brandenburg an der Havel
Contact:

Post by *Samuel »

I think sheppaul or better someone else from Korea should confirm what is possible or not. (problem1x32, problem1x64, problem2x32, problem2x64,) I'm not sure about the current status that only the x64 version is faulty.

Perhaps you could create a test environment? Possible?
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 50400
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

2sheppaul
I have watched your video now - can you tell me HOW you enter the characters? I have played a bit with Microsoft IME, and found out that I have to press right Alt to get Korean characters. Then I can type e.g. "guf" to get a composed character "혈", which seems to mean "hole" according to Google translate. I created a file starting with that character.

Now when I start to type "guf" in the file list with search mode "letters - with search dialog", a small IME window appears in the upper left of the screen. After typing guf and a space, the quick search appears and the file starting with that character is focused. This works fine both in the 32-bit and the 64-bit version.

I wonder how you enter Korean characters. I noticed that there is also another Korean input method beside Microsoft IME, but that produces only English characters here. How do I change that to enter Korean? Does that work only with a special Korean keyboard?
Author of Total Commander
https://www.ghisler.com
sheppaul
Member
Member
Posts: 134
Joined: 2003-12-05, 07:59 UTC

Post by *sheppaul »

Posted: Fri Oct 21, 2011 2:25 am Post subject:
2sheppaul
I have watched your video now - can you tell me HOW you enter the characters? I have played a bit with Microsoft IME, and found out that I have to press right Alt to get Korean characters. Then I can type e.g. "guf" to get a composed character "혈", which seems to mean "hole" according to Google translate. I created a file starting with that character.

Now when I start to type "guf" in the file list with search mode "letters - with search dialog", a small IME window appears in the upper left of the screen. After typing guf and a space, the quick search appears and the file starting with that character is focused. This works fine both in the 32-bit and the 64-bit version.
It works with one syllable (혈, guf).
It does not work with more than one syllable though.

If you want to confirm, make a file of "사진(tkwls)" and "영상(dudtkd)". After changing keyboard to korean, try to input "사진" or "영상". (type tkwls or dudtkd) This works fine in the 32-bit version but not in the 64-bit. ("사진" means picture/"영상" means image.)
It can be a bug of Lazarus itself. It seems like Lazarus does not support well double byte languages.

but that produces only English characters here. How do I change that to enter Korean? Does that work only with a special Korean keyboard?
Well, I'm not sure as I'm using microsoft IME or microsoft IME 2010 (provided by ms office 2010 for Korean). I've just tried other IMEs (created in Korea) to make sure whether the problem is in IME or not but there are no differences among the IMEs. What you are trying to input Korean is right method. I think microsoft IME for Korean is enough to test.


As you may know, there has been a big problem not starting immediately quick search with Korean input. I hope it will be figured out and fixed finally. Thanks for your effort!!
User avatar
Samuel
Power Member
Power Member
Posts: 1930
Joined: 2003-08-29, 15:44 UTC
Location: Germany, Brandenburg an der Havel
Contact:

Post by *Samuel »

Can you please always specify what kind of QuickSearch you use? (TC internal QS, QSx, QSx korean-beta) (and if the option "allow input leading to an empty list" is enabled in QSx or not)

It could be that this leads to the experienced effects.
Could you run some tests?
- TCs internal QS 32 & 64
- QSx 32 & 64 without option "allow input leading to an empty list"
- QSx 32 & 64 with option "allow input leading to an empty list"
sheppaul
Member
Member
Posts: 134
Joined: 2003-12-05, 07:59 UTC

Post by *sheppaul »

Can you please always specify what kind of QuickSearch you use?
The problem is not related with QuickSearch Extended directly. It occurs regardless of QSx.

TCs internal QS 32: works
TCs internal QS 64: don't works
* There is no instant reaction with Korean input.
allow input leading to an empty list
I think the option just works without any problem (of course in 32-bit version).
sheppaul
Member
Member
Posts: 134
Joined: 2003-12-05, 07:59 UTC

How to remove an IME composition box while inputting Korean.

Post by *sheppaul »

How to remove an IME composition box while inputting Korean.

Any component should use IME handler (WM_IME_COMPOSITION message handler for processing DBCS characters) to control an IME composition box.

I've searched delphi forum in korea. There are similar cases.
The following is one of the case occurring in tsGrid component.
According to the writer of the codes below, it's possible to fix the problem with other components too.

Code: Select all

http://www.delmadang.com/community/bbs_view.asp?bbsNo=17&bbsCat=0&st=C&keyword=%uD55C%uAE00%20ime&indx=391266&keyword1=한글&keyword2=ime&page=1
------------- 
constructor TmyLIB.Create;
begin
// Processing Korean Characters in Grid
Application.OnMessage := AppMessage;
.....
end;

procedure TmyLIB.AppMessage(var Msg: TMsg; var Handled: Boolean);
var lead: integer;
IMC: HIMC;
pt : TPoint;
rct: TRect;
tCF : tagCompositionForm;
begin
// Use in Grid Only
if screen.ActiveControl is TtsGrid then begin
// Korean Message Procedure
if (Msg.message = WM_IME_COMPOSITION) or
(Msg.message = WM_CHAR) or
(Msg.message = WM_IME_STARTCOMPOSITION) or
(Msg.message = WM_IME_ENDCOMPOSITION) then begin
if (prevMsg.message = WM_CHAR) and
(prevMsg.wParam > $0080) and
(Msg.message = WM_CHAR) and
(Msg.wParam > $0080) then
lead := 12
else
lead := 0;

IMC := ImmGetContext(ImmGetDefaultImeWnd(Application.ActiveFormHandle));
GetCaretPos(pt);
tCF.dwStyle := CFS_RECT;
pt.Y := pt.Y - 3;
pt.X := pt.X + lead;
tCF.ptCurrentPos := pt;
rct.TopLeft := pt;
tCF.rcArea := rct;
ImmSetCompositionWindow(IMC,@tCF);
ImmReleaseContext(ImmGetDefaultImeWnd(Application.ActiveFormHandle), IMC);
end;
prevMsg := Msg; // Keeping message. Move to right in an IME combination box if WM_CHAR comes sequentially and it is Korean character.
end;
Handled := False;
end;
 
Hope this helps.
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 50400
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

It works with one syllable (혈, guf).
It does not work with more than one syllable though.
Ah, that makes it clear - it seems to be a text selection problem!

To confirm, try this:
1. Open quick search with Ctrl+S
2. Type the first character, e.g. dud
3. Press space - the character is selected, it shouldn't be!
4. Click behind the character
5. Enter the second character, e.g. tkd
-> this way it works, but not without step 4.

I will fix that in the next beta.
Author of Total Commander
https://www.ghisler.com
sheppaul
Member
Member
Posts: 134
Joined: 2003-12-05, 07:59 UTC

Post by *sheppaul »

The bug it not fixed completely. 8.0b7 (x64)

It only works with the following way.
- Change keyboard to korean and input korean. In this way, it works. However, it does not work with more than two syllable like "사진보관".

Other than this, the bug is not fixed yet.
For example, it does not work when you call quick search by ctrl+s and input Korean. (same as previous. only works with one syllable.)


By the way, is it hard to remove IME combination box while inputting Korean? Because of the IME combination box, quick search is rather useless.
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 50400
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Please, can you give me step by step instructions how to reproduce something which does not work? I followed the instructions above, and it all works for me.
Author of Total Commander
https://www.ghisler.com
sheppaul
Member
Member
Posts: 134
Joined: 2003-12-05, 07:59 UTC

Post by *sheppaul »

Used option in TCMD: Letters - with search dialog

1. Make folders named as "노트북(shxmqnr), 모니터(ahslxj), 사진작업(tkwlswkrdjq), 컴퓨터(zjavbxj)".
노트북|모니터|사진작업|컴퓨터

2. Change a keyboard to Korean (microsoft IME).

3-1. Cannot input more than two syllables.
- try to input "사진작업 (tk-wls-wkw-djq)": It's impossible to input from the third syllable "작업 (wkw-djq)".

3-2. Cannot input more than one syllable.
- Call search dialog (Ctrl+X) before inputting anything in korean.
- try to input "사진작업 (tk-wls-wkw-djq, divided by 4 syllables using hypen)": Only first syllable (노) is allowed to input.



Separation of syllables by hypen.
노트북 (sh-xm-qnr) : Notebook
모니터 (ah-sl-xj) : Monitor
사진작업 (tk-wls-wkw-djq) : Photography
컴퓨터 (zja-vb-xj) : Computer

PS. refer to the following video:
http://www.mediafire.com/?gki2m5egm0ioflb
Post Reply