Hi Robert I just tried using key-description, for example (define-minor-mode math-typing-mode "A minor mode for typing maths characters" :init-value nil :lighter " Math" (let ((map (make-sparse-keymap))) (if math-typing-mode (progn (define-key map (kbd "C-3") (key-description "\u00B3")) (use-local-map map)) (use-local-map nil)))) but this produces the same result as (define-key map (kbd "C-3") "\u00B3") while (define-key map (kbd "C-3") [?\u00B3]) or my original lambda works (inserts the unicode character when you press C-3) Probably I misunderstand what you are suggesting though? On Mon, 9 Jun 2025 at 15:40, Eli Zaretskii wrote: > > Cc: 78714@debbugs.gnu.org, Andreas Schwab > > From: Robert Pluim > > Date: Mon, 09 Jun 2025 13:48:31 +0200 > > > > >>>>> On Mon, 9 Jun 2025 11:05:40 +0100, John Holman < > john.g.holman@gmail.com> said: > > > > John> Many thanks Andreas - that's certainly more concise than using > a lambda. > > John> I do think this is a trap for users who may expect that a key > definition > > John> that a single character string simply specifies the character > to be > > John> inserted when that key is pressed rather than a macro. > Treating a string > > John> with a single character as a character to insert rather than a > > John> one-character macro might avoid that, or if that is awkward to > implement or > > John> otherwise undesirable an explicit warning in the documentation > might help. > > John> The documentation for define-key does say that a string is > treated as a > > John> keyboard macro, but the significance of that is easy to miss. > > > > (info "(emacs) Init Rebinding") describes how to do this. The > > docstring for `keymap-global-set' also mentions `key-description', > > which avoids the need to manually write in vector notation, which I > > guess we could add to `keymap-set' as well. > > Feel free to add that. >