Angus Leeming wrote:
> Note that someone posted a minimal immodule patch a month or so ago. (I'm
> pretty sure that it was to this list.) Unfortunately, I don't think that
> anyone picked it up, or even said thank you. Even more unfortunately, my
> trawling of the archive has failed to dig it up.
http://marc.theaimsgroup.com/?l=lyx-users&m=111332961222235&w=2
It's from I�aki Garc�a Etxebarria (patch attached). The patch does the correct
thing from all that I know [1], but it only implements accent-caron. It would
be great if someone could pick it up and try a general version. Too bad that
I�aki is too busy ...
J�rgen
[1] mostly from this howto (and not enough to implement it myself :-():
http://www.kde.gr.jp/~asaki/how-to-support-input-method.html
diff -ru ../lyx-1.3.5.old/src/frontends/qt2/QContentPane.C ./src/frontends/qt2/QContentPane.C
--- ../lyx-1.3.5.old/src/frontends/qt2/QContentPane.C 2003-12-29 14:54:16.000000000 +0100
+++ ./src/frontends/qt2/QContentPane.C 2005-04-12 19:21:40.000000000 +0200
@@ -100,6 +100,7 @@
setFocusPolicy(QWidget::WheelFocus);
setFocus();
setCursor(ibeamCursor);
+ setInputMethodEnabled(true);
// stupid moc strikes again
connect(wa_->scrollbar_, SIGNAL(valueChanged(int)),
@@ -235,6 +236,30 @@
}
+void QContentPane::imStartEvent(QIMEvent *e)
+{
+ e->accept();
+}
+
+void QContentPane::imComposeEvent(QIMEvent *e)
+{
+ e->accept();
+}
+
+void QContentPane::imEndEvent(QIMEvent *e)
+{
+ if (!e->text().isEmpty()) {
+ if (e->text() == "^") {
+ QKeyEvent *ev = new QKeyEvent (QEvent::KeyPress,
+ Qt::Key_AsciiCircum, '^', 0,
+ QString("^"));
+ keyPressEvent(ev);
+ delete ev;
+ }
+ }
+ e->accept();
+}
+
void QContentPane::doubleClickTimeout()
{
if (!dc_event_.active)
diff -ru ../lyx-1.3.5.old/src/frontends/qt2/QContentPane.h ./src/frontends/qt2/QContentPane.h
--- ../lyx-1.3.5.old/src/frontends/qt2/QContentPane.h 2003-12-29 14:54:16.000000000 +0100
+++ ./src/frontends/qt2/QContentPane.h 2005-04-12 19:21:40.000000000 +0200
@@ -101,6 +101,10 @@
void wheelEvent(QWheelEvent * e);
/// key press
void keyPressEvent(QKeyEvent * e);
+ /// IM events
+ void imStartEvent(QIMEvent *);
+ void imComposeEvent(QIMEvent *);
+ void imEndEvent(QIMEvent *);
public slots:
void doubleClickTimeout();