2013-01-05 25 views
1

在Emacs,意大利語鍵盤上,我希望字母上方的字母數字鍵(1 /!,2 /「,3 /£,4/$,...)插入移位字符(例如!「£$)單獨按下時。 有沒有辦法做到這一點?Emacs rebind自插鍵

回答

4

對於每個編號/炭對,你需要安裝兩個鍵綁定來交換他們,而第三個,以避免搞亂了鍵盤(因爲KP-0 - KP-9鍵轉換爲 - ,但我猜你不想KP-1插入!

這裏是爲了避免手工創建所有這些鍵綁定宏:

(defmacro swap-keys (list) 
    `(progn 
    ,@(mapcar 
     (lambda (keys) 
      (let ((key1 (car keys)) 
       (key2 (cdr keys))) 
      `(progn 
       (global-set-key ,key1 (lambda() (interactive) (insert ,key2))) 
       (global-set-key ,key2 (lambda() (interactive) (insert ,key1))) 
       (global-set-key (kbd ,(format "<kp-%s>" key1)) 
           (lambda() (interactive) (insert ,key1)))))) 
     list))) 

(swap-keys (("1" . "!") 
      ("2" . "\""))) 
+0

感謝Francesco!我設法在X服務器級別重新映射,但您的代碼看起來很有趣! –

1

你可以寫:

(global-set-key (kbd "1") (lambda() (interactive) (insert "!"))) 

+0

或確實'(全球設置鍵(KBD 「1」) 「!」)';但其他答案更全面。 – phils

4

可以設置有這些按鍵自定義輸入法翻轉(doc)。

前我在對的.emacs的佈局有這樣的使用:

(eval-after-load 'quail 
    '(progn 
     (add-to-list 'quail-keyboard-layout-alist 
    '("us-pgr-dvk" . "\ 
           \ 
$~&%[7{5}3(1=9*0)2+4]6!8#` \ 
    ;:,<.>pPyYfFgGcCrRlL/[email protected]^\\| \ 
    aAoOeEuUiIdDhHtTnNsS-_  \ 
    '\"qQjJkKxXbBmMwWvVzZ  \ 
           ")) 
    )) 
(quail-set-keyboard-layout "us-pgr-dvk")