<Control> Emacs 23'te başka bir anahtara bağlayın


1

GNU Emacs 23.2 kullanıyorum. [Kontrol] ö'ü (Almanca) klavyemdeki tuşa bağlamak istiyorum . Bu şekilde C-sağ elimle önek komutlarında rahatça tetikleyebilirim . Ne yazık ki nasıl yapılacağı hakkında hiçbir fikrim yok. Emacs global-set-keyburada yardımcı olmaz, çünkü basılması C-bir komut değildir.

Güncelleme: Win32 ve GNU / Linux'tayım. Bu bağlanma emacs içinde ancak kendi emacs ile elde edilmesini isterim - emacs ile çok kendi araçları.


Hangi işletim sistemini kullanıyorsunuz? Anahtar eşleştirmeyi bu seviyede gerçekleştirmeye ne dersiniz?
Değil Emin

Her zamanki yaklaşım Caps Lock'u Ctrl'ye ayarlamaktır. Bu X11 klavye seçeneğiyle kolayca yapılabilir "XkbOptions" "ctrl:nocaps". Windows için bir kayıt defteri anahtarı almanız gerekir . Emacs, uygun bir Ctrl tuşunun yararlı olduğu tek program değildir.
04'te ceving

Yanıtlar:


3

Peki ya Control lockanahtar?

Tam eşdeğeri için bir engel, Controlne zaman tutulduğunu ve ne zaman serbest bırakıldığını bilmesi gerektiğidir. Emacs klavye olayları (fare olaylarından farklı olarak) 'aşağı' ve 'yukarı' parçalara bölünmez, bu da 'serbest bırakılmasını' orada algılamamızı zorlaştırır. Örneğin, arasındaki tek fark C-x C-ove C-x oikinci karakter before kontrol makyaj 'olaydır. Ancak, bu yalnızca bir anahtar dizilişinde 'bırakmaya' izin verirseniz sorun olur

Buradaki yöntem, Control lockEmacs içindeki tüm anahtarları bağlamanızı sağlar . Ayrıca, Controlanahtarı yarı yolda bırakan anahtar dizileri için bazı kolay çalışmalar da ekledim .


Aşağıdaki kod size, bir bütün anahtar dizilimi için değiştiriciyi tutan bir 'Kontrol Kilidi' bağlaması verir. Aşağıdaki örnek buna bağlanır ö, ancak istediğiniz herhangi bir şeye bağlayabilirsiniz.

(defun read-control-sequence (prompt)
  (let (keys)
    (setq extra-keyboard-modifiers ?\C-a)
    (setq keys (read-key-sequence-vector (or prompt "[Control lock]")))
    (setq extra-keyboard-modifiers 0)
    keys))

(define-key key-translation-map [?ö] 'read-control-sequence)

Bunu kullanmak için, basitçe basın (ve bırakın) ö. Bir sonraki tuşa controlbasılmış gibi davranır . Girdiğiniz anahtar bir önek tuşuysa (örneğin xalmak için bastığınızda C-x) control, bir sonraki tuş için basılı tutup, önek olmayan bir tuşa basana kadar devam eder.

Bunu çok kullanırsanız, .emacsortak bir komut için “ controlyoldan gitmesine izin vermeyen” ortak komutlar eklemek de isteyebilirsiniz . Örneğin, bu:

(global-set-key (kbd "C-x C-4")
                (lookup-key (current-global-map)
                            (kbd "C-x 4")))

yazmaya başlayan tüm komutları C-x 4da kullanılabilir kılar C-x C-4, böylece yazma ö x 4 fçalışacaktır find-file-other-window.

Ayrıca, Öyalnızca bir bağımsızlık sağlamak için bir eşleme (örneğin sermayeye ) eklemeyi faydalı bulabilirsiniz C-x:

(define-key key-translation-map [?Ö] [(control ?x)])

Yukarıdaki kodların tümü (her zamanki gibi) .emacsdosyanızı ekleyerek ve Emacs'ı yeniden başlatarak veya C-x C-eher üst düzey ifadeden sonra yazarak yüklenebilir . Bu yaklaşımın, Emacs'ın geri kalanıyla az ya da çok kesintisiz bir şekilde bütünleştiğini bulmalısınız.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.