à ma dernière mise à jour d'emacs-multi-tty ce week-end le pavé numérique
sous GNU/Linux en mode graphique (XFree) a cessé de répondre.
Je n'ai pas le message exact sous les yeux mais il indique que kp-1
kp-2, ... kp-enter n'est associé à rien.
Auparavant un C-h k enter du pavé numérique indiquait «RET (translated
from <kp-enter>)», idem pour les autres touches.
Je n'ai pas eu le temps de compiler un nouvel emacs-snapshot pour
vérifier si c'était un problème propre au multi-tty ou si cela a été
introduit dans le cvs.
Mais peut-être que quelqu'un saurait me dire comment je peux lui
indiquer comment les kp-xx doivent se traduire ?
Si possible autrement qu'avec un truc comme
(global-set-key (kbd "<kp-divide>") "/")
que je trouve moyennement propre, surtout qu'il faut alors aussi définir
les associations avec shift et control...
(loop for sym in (sort (loop for sym being each symbol when (numeric-pad-p sym) collect sym) #'string<) do (message "%s" sym))
--drkm
Sébastien Kirche
Le 4 July 2005 à 23:07, drkm a formulé :
(Luc Habert) writes:
> Sébastien Kirche :
> > Ça fonctionne merci. Comment on fait pour désigner [enter] ?
> [13]
Personnellement, je préfère :
(kbd "<RET>")
Ok, merci (ainsi qu'à Luc) pour vos explications.
Donc si je comprends bien : - avec keyboard-translate on peut traduire un caractère en un autre lors de la saisie mais ça ne fonctionne pas si la touche ne génère pas de caractère
- on remplace une touche par une autre avec define-key, pour ce que j'ai compris de la docstring, si le mapping existe déjà il est modifié, sinon il est ajouté
Il se trouve que sur mon mac j'avais déjà des touches qui ne fonctionnaient pas : les symbole / du pavé numérique (alors que bizarrement les autres et les chiffres fonctionnent) et les touches home end prior et next et suppr.
J'avais à l'époque défini ceci : (global-set-key (kbd "<kp-delete>") 'delete-char) ;touche suppr (global-set-key (kbd "<kp-divide>") "/") ;touche division sur pavé num ;(inactif sur mon poste ?) (global-set-key (kbd "<C-kp-home>") (kbd "<C-home>"));idem / (global-set-key (kbd "<C-kp-end>") (kbd "<C-end>")) ;idem /
Si j'ai bien saisi le reste de la discussion : avec les global-set-key j'ai simplement associé des insertions de caractère à de touches non définies alors qu'avec define-key je dis à emacs «cette touche se comporte comme cette autre».
C'est bien ça ?
-- Sébastien Kirche
Le 4 July 2005 à 23:07, drkm a formulé :
lhabert@clipper.ens.fr (Luc Habert) writes:
> Sébastien Kirche :
> > Ça fonctionne merci. Comment on fait pour désigner [enter] ?
> [13]
Personnellement, je préfère :
(kbd "<RET>")
Ok, merci (ainsi qu'à Luc) pour vos explications.
Donc si je comprends bien :
- avec keyboard-translate on peut traduire un caractère en un autre lors
de la saisie mais ça ne fonctionne pas si la touche ne génère pas de
caractère
- on remplace une touche par une autre avec define-key, pour ce que j'ai
compris de la docstring, si le mapping existe déjà il est modifié,
sinon il est ajouté
Il se trouve que sur mon mac j'avais déjà des touches qui ne
fonctionnaient pas : les symbole / du pavé numérique (alors que
bizarrement les autres et les chiffres fonctionnent) et les touches home
end prior et next et suppr.
J'avais à l'époque défini ceci :
(global-set-key (kbd "<kp-delete>") 'delete-char) ;touche suppr
(global-set-key (kbd "<kp-divide>") "/") ;touche division sur pavé num
;(inactif sur mon poste ?)
(global-set-key (kbd "<C-kp-home>") (kbd "<C-home>"));idem /
(global-set-key (kbd "<C-kp-end>") (kbd "<C-end>")) ;idem /
Si j'ai bien saisi le reste de la discussion : avec les global-set-key
j'ai simplement associé des insertions de caractère à de touches non
définies alors qu'avec define-key je dis à emacs «cette touche se
comporte comme cette autre».
> > Ça fonctionne merci. Comment on fait pour désigner [enter] ?
> [13]
Personnellement, je préfère :
(kbd "<RET>")
Ok, merci (ainsi qu'à Luc) pour vos explications.
Donc si je comprends bien : - avec keyboard-translate on peut traduire un caractère en un autre lors de la saisie mais ça ne fonctionne pas si la touche ne génère pas de caractère
- on remplace une touche par une autre avec define-key, pour ce que j'ai compris de la docstring, si le mapping existe déjà il est modifié, sinon il est ajouté
Il se trouve que sur mon mac j'avais déjà des touches qui ne fonctionnaient pas : les symbole / du pavé numérique (alors que bizarrement les autres et les chiffres fonctionnent) et les touches home end prior et next et suppr.
J'avais à l'époque défini ceci : (global-set-key (kbd "<kp-delete>") 'delete-char) ;touche suppr (global-set-key (kbd "<kp-divide>") "/") ;touche division sur pavé num ;(inactif sur mon poste ?) (global-set-key (kbd "<C-kp-home>") (kbd "<C-home>"));idem / (global-set-key (kbd "<C-kp-end>") (kbd "<C-end>")) ;idem /
Si j'ai bien saisi le reste de la discussion : avec les global-set-key j'ai simplement associé des insertions de caractère à de touches non définies alors qu'avec define-key je dis à emacs «cette touche se comporte comme cette autre».
C'est bien ça ?
-- Sébastien Kirche
Sébastien Kirche
Le 4 July 2005 à 23:07, drkm a formulé :
(Luc Habert) writes:
> Sébastien Kirche :
> > Ça fonctionne merci. Comment on fait pour désigner [enter] ?
> [13]
Personnellement, je préfère :
(kbd "<RET>")
Ok, merci (ainsi qu'à Luc) pour vos explications.
Donc si je comprends bien : - avec keyboard-translate on peut traduire un caractère en un autre lors de la saisie mais ça ne fonctionne pas si la touche ne génère pas de caractère
- on remplace une touche par une autre avec define-key, pour ce que j'ai compris de la docstring, si le mapping existe déjà il est modifié, sinon il est ajouté
Il se trouve que sur mon mac j'avais déjà des touches qui ne fonctionnaient pas : le symbole / du pavé numérique (alors que bizarrement les autres et les chiffres fonctionnent) et les touches home end prior next et suppr.
J'avais à l'époque défini ceci : (global-set-key (kbd "<kp-delete>") 'delete-char) ;touche suppr (global-set-key (kbd "<kp-divide>") "/") ;touche division sur pavé num ;(inactif sur mon poste ?) (global-set-key (kbd "<C-kp-home>") (kbd "<C-home>"));idem / (global-set-key (kbd "<C-kp-end>") (kbd "<C-end>")) ;idem /
Si j'ai bien saisi le reste de la discussion : avec les global-set-key j'ai simplement associé des insertions de caractère à des touches non définies alors qu'avec define-key je dis à emacs «cette touche se comporte comme cette autre».
C'est bien ça ?
-- Sébastien Kirche
Le 4 July 2005 à 23:07, drkm a formulé :
lhabert@clipper.ens.fr (Luc Habert) writes:
> Sébastien Kirche :
> > Ça fonctionne merci. Comment on fait pour désigner [enter] ?
> [13]
Personnellement, je préfère :
(kbd "<RET>")
Ok, merci (ainsi qu'à Luc) pour vos explications.
Donc si je comprends bien :
- avec keyboard-translate on peut traduire un caractère en un autre lors
de la saisie mais ça ne fonctionne pas si la touche ne génère pas de
caractère
- on remplace une touche par une autre avec define-key, pour ce que j'ai
compris de la docstring, si le mapping existe déjà il est modifié,
sinon il est ajouté
Il se trouve que sur mon mac j'avais déjà des touches qui ne
fonctionnaient pas : le symbole / du pavé numérique (alors que
bizarrement les autres et les chiffres fonctionnent) et les touches home
end prior next et suppr.
J'avais à l'époque défini ceci :
(global-set-key (kbd "<kp-delete>") 'delete-char) ;touche suppr
(global-set-key (kbd "<kp-divide>") "/") ;touche division sur pavé num
;(inactif sur mon poste ?)
(global-set-key (kbd "<C-kp-home>") (kbd "<C-home>"));idem /
(global-set-key (kbd "<C-kp-end>") (kbd "<C-end>")) ;idem /
Si j'ai bien saisi le reste de la discussion : avec les global-set-key
j'ai simplement associé des insertions de caractère à des touches non
définies alors qu'avec define-key je dis à emacs «cette touche se
comporte comme cette autre».
> > Ça fonctionne merci. Comment on fait pour désigner [enter] ?
> [13]
Personnellement, je préfère :
(kbd "<RET>")
Ok, merci (ainsi qu'à Luc) pour vos explications.
Donc si je comprends bien : - avec keyboard-translate on peut traduire un caractère en un autre lors de la saisie mais ça ne fonctionne pas si la touche ne génère pas de caractère
- on remplace une touche par une autre avec define-key, pour ce que j'ai compris de la docstring, si le mapping existe déjà il est modifié, sinon il est ajouté
Il se trouve que sur mon mac j'avais déjà des touches qui ne fonctionnaient pas : le symbole / du pavé numérique (alors que bizarrement les autres et les chiffres fonctionnent) et les touches home end prior next et suppr.
J'avais à l'époque défini ceci : (global-set-key (kbd "<kp-delete>") 'delete-char) ;touche suppr (global-set-key (kbd "<kp-divide>") "/") ;touche division sur pavé num ;(inactif sur mon poste ?) (global-set-key (kbd "<C-kp-home>") (kbd "<C-home>"));idem / (global-set-key (kbd "<C-kp-end>") (kbd "<C-end>")) ;idem /
Si j'ai bien saisi le reste de la discussion : avec les global-set-key j'ai simplement associé des insertions de caractère à des touches non définies alors qu'avec define-key je dis à emacs «cette touche se comporte comme cette autre».
C'est bien ça ?
-- Sébastien Kirche
lhabert
Sébastien Kirche :
- on remplace une touche par une autre avec define-key,
Plus précisément, define-key, ça prend une keymap en argument et ça modifie un binding dedans. Après, tout dépend de à quoi sert la keymap. En l'occurence, il y a une keymap « key-translation-map », qu'emacs utilise à bas niveau pour traduire les évènements claviers (par exemple, c'est elle qui traduit les séquences d'echappement en keysyms), et c'est donc sur elle qu'il faut agir pour résoudre ton problème.
Si j'ai bien saisi le reste de la discussion : avec les global-set-key j'ai simplement associé des insertions de caractère à des touches non définies alors qu'avec define-key je dis à emacs «cette touche se comporte comme cette autre».
Oui.
Sébastien Kirche :
- on remplace une touche par une autre avec define-key,
Plus précisément, define-key, ça prend une keymap en argument et ça modifie
un binding dedans. Après, tout dépend de à quoi sert la keymap. En
l'occurence, il y a une keymap « key-translation-map », qu'emacs utilise à
bas niveau pour traduire les évènements claviers (par exemple, c'est elle
qui traduit les séquences d'echappement en keysyms), et c'est donc sur elle
qu'il faut agir pour résoudre ton problème.
Si j'ai bien saisi le reste de la discussion : avec les global-set-key
j'ai simplement associé des insertions de caractère à des touches non
définies alors qu'avec define-key je dis à emacs «cette touche se
comporte comme cette autre».
- on remplace une touche par une autre avec define-key,
Plus précisément, define-key, ça prend une keymap en argument et ça modifie un binding dedans. Après, tout dépend de à quoi sert la keymap. En l'occurence, il y a une keymap « key-translation-map », qu'emacs utilise à bas niveau pour traduire les évènements claviers (par exemple, c'est elle qui traduit les séquences d'echappement en keysyms), et c'est donc sur elle qu'il faut agir pour résoudre ton problème.
Si j'ai bien saisi le reste de la discussion : avec les global-set-key j'ai simplement associé des insertions de caractère à des touches non définies alors qu'avec define-key je dis à emacs «cette touche se comporte comme cette autre».