Laisser passer les touches de fonctions « Fn » dans un terminal.

Liste des GroupesRevenir à fca emacs 
Sujet : Laisser passer les touches de fonctions « Fn » dans un terminal.
De : nospam (at) *nospam* valrik.invalid (Valrik)
Groupes : fr.comp.applications.emacs
Organisation : Guest of ProXad - France
Date : 07. Oct 2020, 18:20:41
Message-ID : <87tuv6dn3a.fsf@s02.forall>
User-Agent : Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux)
Bonjour à tous.

Je souhaiterais utiliser l'application pamix (réglage du son) dans un
terminal Emacs.

Seulement voila, pour passer d'un « panneau » à l'autre de celle-ci, il
faut utiliser les touches de fonctions F1 à F4. Mais elles sont «
interceptées » par le terminal d'Emacs.

J'ai trouvé sur
https://stackoverflow.com/questions/2396680/let-emacs-send-fn-keys-to-programs-in-ansi-term
un bout de code intéressant et que j'ai adapté comme suit :

(defun term-send-function-key ()
  "suivant : https://stackoverflow.com/questions/2396680/let-emacs-send-fn-keys-to-programs-in-ansi-term"
  (interactive)
  (let* ((char last-input-event)
         (output (cdr (assoc char term-function-key-alist))))
    (term-send-raw-string output)))


(defun ma-term-init-appel_initialisation_des_raccourcis_clavier()
  "Appel de toutes les fonctions d'initialisation des raccourcis
clavier."

  ;; d'après "https://stackoverflow.com/questions/5500035/set-custom-keybinding-for-specific-emacs-mode"
  (eval-after-load 'term-mode
    (progn
      (local-set-key (kbd "<f6> ck") 'ma-term-copie_kill_ring_dans_term)
      ;; (local-set-key [(shift f7)] (lambda () (interactive) (term-send-raw-string "^[OR"))) ;; Essai
      ;; (local-set-key [(shift f1)] (lambda () (interactive) (term-send-raw-string "q"))) ;; Essai

      (defconst term-function-key-alist '((f1 . "\e[OP")
  (f2 . "\e[OQ")
  (f3 . "\e[OR")
  (f4 . "\e[OS")
  (f7 . "q")))

      (dolist (spec term-function-key-alist)
(define-key term-raw-map
  (read-kbd-macro (format "<%s>" (car spec)))
  'term-send-function-key))

)))

Cela fonctionne correctement pour la touche F7 (arrêt de pamix et retour
au shell), mais pas pour les autres. En glanant des éléments sur le net,
j'ai également essayé pas mal de combinaisons en utilisant M-: RET
(term-send-raw-string "le_code_à_tester") : rien à faire, pamix reste
imperturbable. Sauf pour « q » bien sûr.

Ce n'est donc pas un problème dans le code Elisp, mais bien le code des
touches fonction « Fn » qui pose problème. Mais je ne trouve pas la
solution dans la documentation.

Déjà, si je pouvais désactiver toute interprétation la frappe des
touches par le terminal, je pourrais utiliser les outils Unix afin
d'identifier les codes correspondants.

Un grand merci pour votre attention.

Date Sujet#  Auteur
07.10 o Laisser passer les touches de fonctions « Fn » dans un terminal.1Valrik

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal