mirror of
https://git.FreeBSD.org/ports.git
synced 2024-12-23 04:23:08 +00:00
7a9fe0970f
Add a patch which converts the IM input charater to Unicode. It requires additional patch dependancy and enlarge executable size, so a knob WITHOUT_IMLOCALE_FIX is provided to disable this feature. PR: ports/98166 Submitted by: Kuang-che Wu <kcwu (at) csie.org>
75 lines
2.1 KiB
Plaintext
75 lines
2.1 KiB
Plaintext
diff -ur src/command.C.orig src/command.C
|
|
--- src/command.C.orig Mon Feb 20 22:41:16 2006
|
|
+++ src/command.C Sun May 21 09:36:40 2006
|
|
@@ -301,6 +301,26 @@
|
|
}
|
|
#endif
|
|
|
|
+void from_imlocale_to_locale(const char *imlocale, const char *locale, wchar_t *wkbuf, int len)
|
|
+{
|
|
+ if(!imlocale || !locale)
|
|
+ return;
|
|
+
|
|
+ if(!strchr(imlocale,'.') || !strchr(locale,'.'))
|
|
+ return;
|
|
+
|
|
+ codeset imcs = codeset_from_name(strchr(imlocale, '.'));
|
|
+ codeset cs = codeset_from_name(strchr(locale, '.'));
|
|
+
|
|
+ if (imcs == CS_UNKNOWN || cs == CS_UNKNOWN)
|
|
+ return;
|
|
+
|
|
+ for(int i=0; i<len; i++) {
|
|
+ wchar_t unicode = TO_UNICODE(imcs, wkbuf[i]);
|
|
+ wkbuf[i] = FROM_UNICODE(cs, unicode);
|
|
+ }
|
|
+}
|
|
+
|
|
void
|
|
rxvt_term::key_press (XKeyEvent &ev)
|
|
{
|
|
@@ -361,6 +381,9 @@
|
|
if (rs[Rs_imLocale])
|
|
SET_LOCALE (locale);
|
|
|
|
+ if (rs[Rs_imLocale])
|
|
+ from_imlocale_to_locale(rs[Rs_imLocale], locale, wkbuf, len);
|
|
+
|
|
if (status_return == XLookupChars
|
|
|| status_return == XLookupBoth)
|
|
{
|
|
diff -ur src/encoding.C.orig src/encoding.C
|
|
--- src/encoding.C.orig Mon Feb 20 22:41:16 2006
|
|
+++ src/encoding.C Sun May 21 09:36:40 2006
|
|
@@ -151,6 +151,7 @@
|
|
static uint32_t cs_us_ascii_from_unicode (unicode_t unicode) { return unicode <= 127 ? unicode : NOCHAR; }
|
|
|
|
#define cs_us_ascii_to_unicode_16 cs_unicode_to_unicode
|
|
+static unicode_t cs_unicode_16_to_unicode (uint32_t enc) { return enc <= 65535 ? enc : NOCHAR; }
|
|
static uint32_t cs_unicode_16_from_unicode (unicode_t unicode) { return unicode <= 65535 ? unicode : NOCHAR; }
|
|
|
|
#define ENCODING_DEFAULT
|
|
diff -ur src/encoding.h.orig src/encoding.h
|
|
--- src/encoding.h.orig Sun May 21 08:14:15 2006
|
|
+++ src/encoding.h Sun May 21 08:16:54 2006
|
|
@@ -2,6 +2,7 @@
|
|
#define ENCODING_H
|
|
|
|
#include <inttypes.h>
|
|
+#define ENCODING_TO_UNICODE 1
|
|
|
|
typedef uint32_t unicode_t;
|
|
|
|
diff -ur src/gentables.orig src/gentables
|
|
--- src/gentables Sun May 21 08:14:15 2006
|
|
+++ src/gentables.orig Sun May 21 08:15:08 2006
|
|
@@ -13,7 +13,7 @@
|
|
|
|
my $gen;
|
|
|
|
-$TO_UNICODE = 0; # also generate to_unicode tables
|
|
+$TO_UNICODE = 1; # also generate to_unicode tables
|
|
|
|
sub linear {
|
|
my ($a, $l, $h, $b) = @_;
|