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 くらいだな。
[ツッコミを入れる]