[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-i18n-doc
Subject:    Re: Farsi problems
From:       qt-bugs () trolltech ! com
Date:       2001-12-18 13:27:26
[Download RAW message or body]

Hi Arash,

sorry that it took me so long to fix this (as it turned out to be rather 
easy), but here it is finally. I've added support for XFree86 Unicode keysyms 
to Qt, and I had no problems inputting characters with the farsi keyboard you 
provided anymore.

The fix will be in tomorrows snapshot of Qt, or you can patch 
qapplication_x11.cpp yourself (path attached). Please test, and tell me if 
there are remaining problems.

Cheers,
Lars


> Hi,
>
> We, the Farsi translation team of KDE, have some
> problems with data input under KDE and hence cannot
> begin our work with the translation.
> The problem is due to problems in X11 and the
> non-support for Farsi characters that are to be seen
> as an extension to the Arabic characters encoded in
> Unicode. This problem affects Kurdish too.
>
> The only solution for us- at this moment at least-
> seems to be to 'hack' QT in order to support the usage
> of Farsi with our keyboard layout.
> Some information on what we did to use a Farsi
> keyboard can be found at:
> http://www.farsikde.com/keyboard.html
>
> We need some information on where to begin and where
> to locate the RTL and Unicode related parts in QT3
> source, in order to see if we can do anything in this
> regard.
> Do you think you could help us getting started with
> this task?
>
> Any help, feedback and pointers are highly welcome and
> appreciated!
>
> Thanks and Best wishes,
> Arash Zeini
>
> __________________________________________________
> Do You Yahoo!?
> Find the one for you at Yahoo! Personals
> http://personals.yahoo.com

["unikeysyms.patch" (text/x-diff)]

==== //depot/qt/3.0/src/kernel/qapplication_x11.cpp#20 (text) ====

@@ -5215,9 +5215,12 @@
 	    }
 	    if ( mib != -1 ) {
 		mapper = QTextCodec::codecForMib( mib );
-		chars[0] = (unsigned char) (key & 0xff );
+		chars[0] = (unsigned char) (key & 0xff); // get only the fourth bit for conversion later
 		count++;
 	    }
+	} else if ( key >= 0x1000000 && key <= 0x100ffff ) {
+	    converted = (ushort) (key - 0x1000000);
+	    mapper = 0;
 	}
 	if ( count < (int)chars.size()-1 )
 	    chars[count] = '\0';


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic