Re: Win32 keyboard broken!!!

From: Daniel Glassey (danglassey@ntlworld.com)
Date: Sat May 24 2003 - 07:09:28 EDT

  • Next message: Daniel Glassey: "Re: Win32 keyboard broken!!!"

    Tomas Frydrych wrote:
    > Since the win32 Unicode patch Win32 keyboard is the completely
    > broken:

    I'd suggest that it is merely seriously broken in a different way -
    broken on win9x as opposed to win2k+

    > on my Win98SE I cannot input characters with any other
    > keyboard layout than English (any non ASCII characters come through
    > as the higher part of the ANSI page). That just about leaves AW
    > unusable for me, and what's worse it makes it impossible for me to
    > work on some bugs that are rather urgent -- I do not want to step on
    > anyone's toes, but this is either needs to be fixed straight away, or
    > the whole Unicode patch will need to be reverted.

    But as you say it is seriously broken - very very serious if it stops
    you working on things.

    I suspect the change to unicode has broken this bit of code below. I
    added in the iswascii because non-ascii values were getting converted to
    the higher part of the ansi page.

    in ev_Win32Keyboard.cpp
    in ev_Win32Keyboard::_emitChar

            if( m_iconv != UT_ICONV_INVALID && iswascii(b))
            {
                    // convert to 8bit string and null terminate
                    size_t len_in, len_out;
                    const char *In = (const char *)&b;
                    char *Out = (char *)&charData;

                    // 2 bytes for Unicode and MBCS
                    len_in = (m_bIsUnicodeInput || (nVirtKey & 0xff00)) ? 2 : 1;
                    len_out = sizeof(charData);

                    if ((ret = UT_iconv( m_iconv, &In, &len_in, &Out, &len_out )) == -1)
                            UT_ASSERT(UT_SHOULD_NOT_HAPPEN);
                    if (Out == (char *)charData)
                    {
                            // m_iconv is waiting for a combination keystroke. Flush the buffer
                        if ((ret = UT_iconv( m_iconv, NULL, &len_in, &Out, &len_out )) == -1)
                                UT_ASSERT(UT_SHOULD_NOT_HAPPEN);
                    }
            }
            else
            {
                    charData[0] = b;
                    charData[1] = 0;
            }

    Bonsai suggests that Andrew is best placed to know about this. Any ideas?

    An immediate fix is unlikely unless you, me, and Andrew can get together
    on irc or something to thrash it out.
    But imho it does need fixed as 'not being able to use a non-latin or
    non-english keyboard' is a serious bug whether it is on win9x or win2k+.

    Anyway, for the immediate issue, should I reverse the patch and submit
    it to bugzilla, or are we likely to get a fix fast enough?

    Regards,
    Daniel



    This archive was generated by hypermail 2.1.4 : Sat May 24 2003 - 07:24:20 EDT