Maximus5 / conemu-old-issues

Old issues imported from googlecode. Project was moved to
https://conemu.github.io
6 stars 1 forks source link

conemu and fantom language #944

Open Maximus5 opened 8 years ago

Maximus5 commented 8 years ago

Originally reported on Google Code with ID 944

Required information!
OS version: Win8x64
ConEmu version: 130212
Far version (if you are using Far Manager): Far3

*Bug description*

http://www.644634.com/conemu.htm

on conemu start input method swithing to nonpresent language.

Reported by switch0do on 2013-02-17 08:17:53

Maximus5 commented 8 years ago
Run "ConEmu64.exe /log2", ensure that problem wsas reproduced, attach here created logs.

Reported by ConEmu.Maximus5 on 2013-02-17 08:42:15

Maximus5 commented 8 years ago
So, can you create logs?

Reported by ConEmu.Maximus5 on 2013-03-21 22:44:13

Maximus5 commented 8 years ago
Хм, я же написал письмо с объяснением в чём проблема и как я это дело пофиксал )))

-------- Original Message --------
Subject:    Re: Issue 944 in conemu-maximus5: conemu and fantom language
Date:   Wed, 20 Feb 2013 16:38:35 -0300
From:   Alexéy Sudachén <alexey@sudachen.name>
To:     conemu-maximus5@googlecode.com

On 17.02.2013 5:42, conemu-maximus5@googlecode.com wrote:
>
> Comment #1 on issue 944 by ConEmu.M...@gmail.com: conemu and fantom 
> language
> http://code.google.com/p/conemu-maximus5/issues/detail?id=944
>
> Run "ConEmu64.exe /log2", ensure that problem wsas reproduced, attach 
> here created logs.
>
Привет. Судя по комментам в коде всем будет удобнее по русски.

В общем я нашёл в чём причина. Та расскладка что у меня стоит это 
латиноамериканская для английского языка - 0x008a0409. В софтину 
приходит 0x8a, что наверное логично. Дальше софтина такую раскладку не 
находит и выставляет её директом, что приводит к магическому появлению 
испанского языка.

У себя я это пофиксал так

     // Если не нашли, и это "классическая" раскладка, в которой ид 
раскладки совпадает с языком
     if (!lbFound && ((dwLayoutName & 0xFFFF) == dwLayoutName))
     {
        .....
     }

     // Если не нашли, может быть это альтернативная раскладка
     if (!lbFound && ((dwLayoutName & 0xFFFF) == dwLayoutName))
     {
         DWORD_PTR dwTest = (dwNewKeybLayout << 16);

         for(i = 0; !lbFound && i < nCount; i++)
         {
             if ( (((DWORD_PTR)hKeyb[i]) & 0x0ffff000) == dwTest)
             {
                 lbFound = TRUE;
                 dwNewKeybLayout = (DWORD_PTR)hKeyb[i];
                 break;
             }
         }
     }

Но не факт что это концептуально правильно.

З.Ы.

Спасибо за софтину.

Reported by rusoexpato on 2013-03-22 03:11:41

Maximus5 commented 8 years ago
Хм. Тут коммента нет, в личке тоже не помню. Странно.

Reported by ConEmu.Maximus5 on 2013-03-22 04:29:38

Maximus5 commented 8 years ago
Проверьте, все ли хорошо в 130421

Reported by ConEmu.Maximus5 on 2013-04-22 07:05:38