トップ 最新

かってきままな日々

2022-02-02 (We) [長年日記]

_ pgtk

pgtk-use-im-context を buffer-local にできないか? と提案された。

C で buffer-local かぁ... できるかどうか超不明..

buffer-local な変数を C で参照してる箇所はたぶんあると思うので、 そこを参考にすれば buffer-local の扱いはなんとかなるのだろう。 あとは、バッファを切り替えた時にうまく切り替えられるかどうかだな。

あと、「ほれほれ、このへんのアプリだと shift-space で 問題なく back scroll できるよ」と言われ、 その中に firefox があったので、ソースを clone して確認してみた。

widget/gtk/IMContextWrapper.cpp:

KeyHandlingState IMContextWrapper::OnKeyEvent(
    nsWindow* aCaller, GdkEventKey* aEvent,
    bool aKeyboardEventWasDispatched /* = false */) {
  MOZ_ASSERT(aEvent, "aEvent must be non-null");

  if (!mInputContext.mIMEState.IsEditable() || MOZ_UNLIKELY(IsDestroyed())) {
    return KeyHandlingState::eNotHandled;
  }

  // (長いので省略)
  gboolean isFiltered = gtk_im_context_filter_keypress(currentContext, aEvent);

やっぱりな、入力エリアじゃない時は gtk_im_context_filter_keypress を 呼んでないわ。そんなことだろうと思ったんだ。 Emacs でその手は使えないわ。 できるとすれば、上に書いた buffer-local くらいだな。