Many thanks to jaybee for the answer. Here's an extended definition for all numbers:
(define-minor-mode shifted-numbers-mode "Toggle shifted numbers mode." nil " shifted" '(("1" . (lambda () (interactive) (insert-char ?! 1))) ("2" . (lambda () (interactive) (insert-char ?@ 1))) ("3" . (lambda () (interactive) (insert-char ?
In Perl, parentheses are often more common than parentheses, so you might also want to:
("[" . (lambda () (interactive) (insert-char ?{ 1))) ("]" . (lambda () (interactive) (insert-char ?} 1))) ("{" . (lambda () (interactive) (insert-char ?[ 1))) ("}" . (lambda () (interactive) (insert-char ?] 1)))
source share