如何设置带有C-x 8前缀的密钥?

时间:2012-09-08 14:40:21

标签: emacs

说我想将C-x 8 x重新绑定到ξ。所以我这样做:

(global-set-key (kbd "C-x 8 x") (lambda () (interactive) (insert "ξ")))

但它不起作用:它仍会插入默认的x符号。然后我试了两个:

(global-unset-key (kbd "C-x 8 x"))
(global-set-key (kbd "C-x 8 x") nil)

none没有任何效果。

修改

以下是我现在为希腊人使用的内容:

(define-key 'iso-transl-ctl-x-8-map "a" [?α])
(define-key 'iso-transl-ctl-x-8-map "b" [?β])
(define-key 'iso-transl-ctl-x-8-map "g" [?γ])
(define-key 'iso-transl-ctl-x-8-map "d" [?δ])
(define-key 'iso-transl-ctl-x-8-map "e" [?ε])
(define-key 'iso-transl-ctl-x-8-map "z" [?ζ])
(define-key 'iso-transl-ctl-x-8-map "h" [?η])
(define-key 'iso-transl-ctl-x-8-map "o" [?θ])
(define-key 'iso-transl-ctl-x-8-map "i" [?ι])
(define-key 'iso-transl-ctl-x-8-map "k" [?κ])
(define-key 'iso-transl-ctl-x-8-map "l" [?λ])
(define-key 'iso-transl-ctl-x-8-map "m" [?μ])
(define-key 'iso-transl-ctl-x-8-map "n" [?ν])
(define-key 'iso-transl-ctl-x-8-map "x" [?ξ])
(define-key 'iso-transl-ctl-x-8-map "p" [?π])
(define-key 'iso-transl-ctl-x-8-map "r" [?ρ])
(define-key 'iso-transl-ctl-x-8-map "s" [?σ])
(define-key 'iso-transl-ctl-x-8-map (kbd "M-s") [?ς])
(define-key 'iso-transl-ctl-x-8-map "x" [?ξ])
(define-key 'iso-transl-ctl-x-8-map "t" [?τ])
(define-key 'iso-transl-ctl-x-8-map "y" [?υ])
(define-key 'iso-transl-ctl-x-8-map "f" [?φ])
(define-key 'iso-transl-ctl-x-8-map "v" [?χ])
(define-key 'iso-transl-ctl-x-8-map "j" [?ψ])
(define-key 'iso-transl-ctl-x-8-map "w" [?ω])
(define-key 'iso-transl-ctl-x-8-map "A" [?Α])
(define-key 'iso-transl-ctl-x-8-map "B" [?Β])
(define-key 'iso-transl-ctl-x-8-map "G" [?Γ])
(define-key 'iso-transl-ctl-x-8-map "D" [?Δ])
(define-key 'iso-transl-ctl-x-8-map "E" [?Ε])
(define-key 'iso-transl-ctl-x-8-map "Z" [?Ζ])
(define-key 'iso-transl-ctl-x-8-map "H" [?Η])
(define-key 'iso-transl-ctl-x-8-map "O" [?Θ])
(define-key 'iso-transl-ctl-x-8-map "I" [?Ι])
(define-key 'iso-transl-ctl-x-8-map "K" [?Κ])
(define-key 'iso-transl-ctl-x-8-map "L" [?Λ])
(define-key 'iso-transl-ctl-x-8-map "M" [?Μ])
(define-key 'iso-transl-ctl-x-8-map "N" [?Ν])
(define-key 'iso-transl-ctl-x-8-map "X" [?Ξ])
(define-key 'iso-transl-ctl-x-8-map "P" [?Π])
(define-key 'iso-transl-ctl-x-8-map "R" [?Ρ])
(define-key 'iso-transl-ctl-x-8-map "S" [?Σ])
(define-key 'iso-transl-ctl-x-8-map "T" [?Τ])
(define-key 'iso-transl-ctl-x-8-map "Y" [?Υ])
(define-key 'iso-transl-ctl-x-8-map "F" [?Φ])
(define-key 'iso-transl-ctl-x-8-map "V" [?Χ])
(define-key 'iso-transl-ctl-x-8-map "J" [?Ψ])
(define-key 'iso-transl-ctl-x-8-map "W" [?Ω])

2 个答案:

答案 0 :(得分:4)

您必须在iso-transl-ctl-x-8-map中设置密钥。如:

(eval-after-load 'iso-transl
  '(define-key iso-transl-ctl-x-8-map "x" "ξ"))

这是因为C-x 8实际上是在key-translation-map中定义的,它会覆盖全局地图。

答案 1 :(得分:0)

哦,我找到了另一种方式:

(define-key 'iso-transl-ctl-x-8-map "x" [?ξ])

reference