Определение сочетаний клавиш Control-Shift- * Emacs - PullRequest
3 голосов
/ 27 сентября 2011

Я пытаюсь определить следующие два сочетания клавиш для перемещения между окнами в Emacs:

  • C-shift-n: Перейти к следующему окну
  • C-shift-b: Перейти к предыдущему окну

Я думал, что следующее сделает это, но это не так.

(defun select-next-window ()                                                                                                                                                                                                                                                                                               
  "Switch to the next window"                                                                                                                                                                                                                                                                                              
  (interactive)                                                                                                                                                                                                                                               
  (select-window (next-window)))                                                          

(defun select-previous-window ()                                                                                                                                                                                                                                                                                     
  "Switch to the previous window"                                                                                                                                                                                                                                                                                  
  (interactive)                                                                                                                                                                                                                                                                                              
  (select-window (previous-window)))        

(global-set-key (kbd "C-<S-n>") 'select-next-window)                                                                                                                                                                                                                                                                    
(global-set-key (kbd "C-<S-p>") 'select-previous-window)

Проблема, похоже, связана с последними двумя строками, которые определяют фактические сочетания клавиш для функций, переключающих окна (если я использую более простые сочетания клавиш вместо Control-Shift-*, это работает).

Итак, как мне использовать kbd для определения Control-Shift-n и Control-Shift-p?

1 Ответ

4 голосов
/ 27 сентября 2011

Предполагая, что вы никогда не используете заглавные буквы, вот очень простое решение:

(global-set-key (kbd "C-N") 'select-next-window)

или

(global-set-key (kbd "C-<S-N>") 'select-next-window)

Проблема в том, что когда вы нажимаете клавишу shift, вы отправляете заглавную N.

...