Thanks, Greg

This is how my code is evolving (the "conditional part" is not working yet):

(add-hook 'logos-focus-mode-hook #'(lambda ()

(defvar posicion
  "Position where is the cursor.")

(defun posicion3 ()
  (interactive)
  (end-of-visual-line) ;;C-e
  (backward-char 7)
  (setq posicion 3)
)

(defun posicion2 ()
  (interactive)
  (forward-char 23)
  (setq posicion 2)
)

(defun posicion1 ()
  (interactive)
  (next-line 1)
  (beginning-of-visual-line)
  (forward-char 6)
  (setq posicion 1)
)

(defun salto ()
  (interactive)
  (if posicion 1
    (posicion2)
      (if posicion 2
      (posicion3)
        (if posicion 3
        (posicion1)))))

;; (define-key global-map (kbd "SPC") #'salto)
(local-set-key "j" 'posicion1)
(local-set-key "k" 'posicion2)
(local-set-key "l" 'posicion3)
))


El 22/05/2022 a las 15:27, Greg Minshall escribió:
Ypo,

Additional problem: I don't know how to recover keys 1, 2 and 3 to
their normal functioning, right now I can't type 1, 2 or 3 on my
Emacs. xD
you have, e.g.,

(define-key global-map (kbd "1") #'posicion1)
(define-key global-map (kbd "2") #'posicion2)
(define-key global-map (kbd "3") #'posicion3)
but, that is in the global map.  for a given mode, i sometimes do
something like that:

(add-hook 'mh-show-mode-hook #'(lambda ()
         (local-set-key "q" 'mh-show-execute-commands)))
or, closer to what you have, sometimes like

            (define-key mh-letter-mode-map
             (kbd "C-c s")
             'ggm-mh-sentaddrs-completion)
i am no elisp expert, and so those are just random things i've found
that work.  but, hopefully this may give you a hint of a direction to
follow.

cheers, Greg