現象
変換中に fn+Delete(フルキーボードのDelキー、keyCode 0x75)を押すと、イベントがIMEで処理されずアプリに素通しされます。
macOS標準の日本語入力やGoogle日本語入力は、変換中のDelをIME側で処理(または消費)します。
修正例(0.1.4ベースの自分用ビルドで動作確認済み)
- keyCode 0x75 を新設の
UserAction.deleteForward として扱う
- composing 中:
ComposingText.deleteForwardFromCursorPosition(count:) でカーソル右側の文字を削除。すべて消えたら none に遷移(backspace と同じ basedOnBackspace コールバックを使用)
- selecting / previewing 中: consume(アプリに流さない)
- 非変換中(none): 従来どおり fallthrough(アプリの通常の前方削除として機能)
なお #349 のカーソル編集を導入すると「文中にカーソルを置いてDelで右側を消す」が現実的な操作になるため、この素通し問題が顕在化しやすくなります。カーソル編集とセットでの対応をおすすめします。
現象
変換中に fn+Delete(フルキーボードのDelキー、keyCode 0x75)を押すと、イベントがIMEで処理されずアプリに素通しされます。
UserAction.getUserActionで.unknownになり(サポート外として明示的に無効化されているグループ)、composing 状態の.unknownは(.fallthrough, .fallthrough)のため、アプリにイベントが渡りますComposingTextと画面表示が不整合になります(bug: Discordでのキー入力中(composing)にOption+Deleteを入力すると全てが削除されたように見えるが、別の文字を入力すると復活する #213 の Option+Delete と同系統の「表示と内部状態の不整合」です)macOS標準の日本語入力やGoogle日本語入力は、変換中のDelをIME側で処理(または消費)します。
修正例(0.1.4ベースの自分用ビルドで動作確認済み)
UserAction.deleteForwardとして扱うComposingText.deleteForwardFromCursorPosition(count:)でカーソル右側の文字を削除。すべて消えたら none に遷移(backspace と同じbasedOnBackspaceコールバックを使用)なお #349 のカーソル編集を導入すると「文中にカーソルを置いてDelで右側を消す」が現実的な操作になるため、この素通し問題が顕在化しやすくなります。カーソル編集とセットでの対応をおすすめします。