I stopped trying to solve this but maybe somebody has a solution for this. I’m unable to use the key-chord package and also the programmer-dvorak input method, is there a key-chord alternative or some workaround for this issue?.
I found a partial workaround . key-chord uses its own input-method-function and so does the input-method (quail-input-method).
(defun my/quail-key-chord-filter (key)
(let* ((result (key-chord-input-method (car key)))
(command (when (> (length result) 1)
(key-chord-lookup-key
(seq--into-vector result)))))
(if command
(progn
(funcall command)
(list nil))
key)))
(defun my/advice-key-chord ()
(advice-add 'quail-input-method :filter-args 'my/quail-key-chord-filter))
(add-hook 'key-chord-mode-hook 'my/advice-key-chord)
Filtering the input to quail-input-method works, unfortunately it slows the input a little bit since it process each key press twice.
I also tried this method with avy. In this case it works perfectly for most commands except for avy-goto-char-timer (it calls read-char directly).
(setq avy-translate-char-function 'my/avy-translate-char)
(defun my/avy-translate-char (char)
(car (quail-input-method char)))
(defun my/avy-filter-args (key)
(if (listp key)
(quail-input-method (car key))
(quail-input-method key)))
(advice-add 'avy-goto-word-1 :filter-args 'my/avy-filter-args)