結局

FX::FXApp::hasInputMethodなる関数が、

#ifdef WIN32
  return true;
#else
  return xim!=NULL;
#endif

などとのたまわっているので常にtrue。
その割にコールバックの中に

/*
    case WM_IME_STARTCOMPOSITION:
      if(activeWindow){
        activeWindow->handle(this, MKUINT(0,SEL_IME_START), NULL);
        }
      return def_window_proc((HWND)hwnd,iMsg,wParam,lParam);

    case WM_IME_ENDCOMPOSITION:
      if(activeWindow){
        activeWindow->handle(this, MKUINT(0,SEL_IME_END), NULL);
        }
      return def_window_proc((HWND)hwnd,iMsg,wParam,lParam);

    case WM_IME_COMPOSITION:
      if((lParam & GCS_RESULTSTR) && activeWindow){
        // Limit the input to 2K characters. 2K should be enough for anyone :-)
        wchar_t wstr[2048];

        HIMC himc = ImmGetContext((HWND)window->id());
        int len = ImmGetCompositionStringW(himc, GCS_RESULTSTR, NULL, 0);
        if(len > sizeof(wstr) - sizeof(wstr[0])){
          len = sizeof(wstr) - sizeof(wstr[0]);
          }

        ImmGetCompositionStringW(himc, GCS_RESULTSTR, wstr, len);
        ImmReleaseContext((HWND)window->id(), himc);

        // The length is given in bytes for some reason.
        wstr[len/sizeof(wstr[0])] = 0;

        char str[6 * sizeof(wstr) / sizeof(wstr[0])];
        int mblen = wcstombs( str, wstr, sizeof(str) );
        str[mblen] = 0;

        activeWindow->handle(this,MKUINT(0,SEL_IME_TEXT),str);
        }
      return def_window_proc((HWND)hwnd,iMsg,wParam,lParam);
*/

というコメントがあって愕然としているわけだが。
少なくともAdleでskkimeは動かない。