Package: perl-tk Version: 1:804.028-3 I cannot input in Entry. This is caused by some incompatibility with XIM. With the help of google, I finally find this patch:
--- pTk/mTk/generic/tkEvent.c 2008-09-05 13:29:48.000000000 +0800 +++ pTk/mTk/generic/tkEvent.c 2008-09-05 13:17:24.000000000 +0800 @@ -945,8 +945,10 @@ #endif } } - if (XFilterEvent(eventPtr, None)) { - goto done; + if(eventPtr->type == KeyPress || eventPtr->type == KeyRelease) { + if(XFilterEvent(eventPtr, None)) { + goto done; + } } } #endif /* TK_USE_INPUT_METHODS */ --- pTk/mTk/unix/tkUnixEvent.c 2008-09-05 13:29:50.000000000 +0800 +++ pTk/mTk/unix/tkUnixEvent.c 2008-09-05 13:20:35.000000000 +0800 @@ -308,19 +308,18 @@ TransferXEventsToTcl(display) Display *display; { - int numFound; XEvent event; - numFound = QLength(display); - /* * Transfer events from the X event queue to the Tk event queue. */ - while (numFound > 0) { + while (QLength(display) > 0) { XNextEvent(display, &event); + if(event.type!=KeyPress && event.type!=KeyRelease) { + if(XFilterEvent(&event, None)) {continue;} + } Tk_QueueWindowEvent(&event, TCL_QUEUE_TAIL); - numFound--; } } I've tested this patch, and it works perfectly. Hope it can be accepted.