Fixed: Dead keys under Linux (Ubuntu was using ibus input method)
This commit is contained in:
parent
ac7f5ffa28
commit
c1d8c9523b
1 changed files with 25 additions and 15 deletions
|
@ -84,26 +84,36 @@ void CUnixEventEmitter::createIM()
|
||||||
|
|
||||||
XModifierKeymap *g_mod_map = XGetModifierMapping(_dpy);
|
XModifierKeymap *g_mod_map = XGetModifierMapping(_dpy);
|
||||||
|
|
||||||
char *modifiers = XSetLocaleModifiers(getenv("XMODIFIERS"));
|
|
||||||
|
|
||||||
_im = XOpenIM(_dpy, NULL, NULL, NULL);
|
_im = XOpenIM(_dpy, NULL, NULL, NULL);
|
||||||
|
|
||||||
if (_im)
|
if (_im == NULL)
|
||||||
{
|
{
|
||||||
_ic = XCreateIC(_im, XNInputStyle, XIMPreeditNothing | XIMStatusNothing, XNClientWindow, _win, XNFocusWindow, _win, NULL);
|
XSetLocaleModifiers("@im=local");
|
||||||
// XSetICFocus(_ic);
|
|
||||||
}
|
_im = XOpenIM(_dpy, NULL, NULL, NULL);
|
||||||
else
|
|
||||||
{
|
if (_im == NULL)
|
||||||
_ic = 0;
|
{
|
||||||
nlwarning("XCreateIM failed");
|
XSetLocaleModifiers("@im=");
|
||||||
|
|
||||||
|
_im = XOpenIM(_dpy, NULL, NULL, NULL);
|
||||||
|
|
||||||
|
if (_im == NULL)
|
||||||
|
{
|
||||||
|
nlwarning("XOpenIM failed");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_ic)
|
if (_im)
|
||||||
{
|
{
|
||||||
nlwarning("XCreateIC failed");
|
_ic = XCreateIC(_im, XNInputStyle, XIMPreeditNothing | XIMStatusNothing, XNClientWindow, _win, XNFocusWindow, _win, NULL);
|
||||||
}
|
|
||||||
|
|
||||||
|
if (!_ic)
|
||||||
|
{
|
||||||
|
nlwarning("XCreateIC failed");
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue