Logot
Pohjimmiltaan mitä minä ” Olen tehnyt pari viime viikkoa yrittäen mukauttaa näppäinlukkoani tilan kerrallaan, joten olen käynyt läpi kunkin tilan yksi kerrallaan ja tyhjentänyt sen avainkartan kokonaan erikseen. Ja sido sitten hyödylliset toiminnot.
Teen tämän myös opetustarkoituksiin saadaksesi lisätietoja avainkarttojen sisäisestä toiminnasta, niiden suhteista, niiden manipuloinnista jne.
Mutta mikä on juuttunut minuun, on se, kuinka jotkut näppäimet (tai functions
/ macros
; en ”ole varmasti, mitä heille tulisi kutsua) on määritelty Esimerkiksi <backtab>
, <C-return>
, <C-tab>
, <C-iso-lefttab>
jne.
Minulla on sitomaton kaikki toimintonäppäimet sekä function-key-map
– että local-function-map
-komennolla komennolla: (setf (cdr <keymap>) nil)
Mutta nämä avaimet näyttävät silti olevan olemassa.
Ehkä olen vain hämmentävä itseäni yrittämällä kietoa pääni kerralla useiden abstraktiotasojen ympärille.
Kysymys
Joten kuinka hävittäisin nämä avaimet kokonaan, jotta voin aloittaa ensimmäisistä periaatteista ja luoda ne itse (omilla mukautetuilla nimillä ja toiminnoilla)?
Bonuskysymys
Miksi (define-key input-decode-map [?\C-i] (kbd "<C-i>"))
luo abstraktin, joka tulkitsee avaimet C-i
div id = ”5407ad7918″>
eri tavalla?
Control + i == C-i
== ^I
== TAB
Control + i = = <C-i>
! = TAB
Onko tällä kenties jotain tekemistä ajatukseni paradigman muutoksen kanssa, jonka täytyy tapahtua, jotta ymmärtää paremmin avainkartat?
Luulen, että todella auttaisi minua ja ihmisiä tulevaisuudessa, jos joku voisi tehdä triviaalin ja monimutkaisen esimerkin tällaisessa muodossa (olettaen, että nykyinen päämuoto on text-mode
):
avain Control + askelpalautin ->
local-function-keymap Control + askelpalautin = <C-backspace>
->
text-mode-map <C-backspace>
= nil
->
global-map <C-backspace>
= backward-kill-word
PÄIVITYS
Huomasin, että voit (eräänlainen) tuhoaa toiminnot ja palauttaa ne sitten vastaaviin ASCII-avaimiin näin:
(setf (cdr x-alternatives-map) nil) (setf (cdr function-key-map) nil) (setf (cdr local-function-key-map) nil) (define-key local-function-key-map (kbd "<tab>") [9]) (define-key local-function-key-map (kbd "<return>") [13]) (define-key local-function-key-map (kbd "<escape>") [27]) (define-key local-function-key-map (kbd "<backspace>") [127])
Mutta vaikka en koskaan pura avaimia uudelleen, jostain syystä tietämättään, mod avaimet toimivat edelleen. Joten onko olemassa avainkartta, josta en vain tiedä?
if <tab> = undefined C-<tab> = defined
Kommentit
Vastaa
Ehkä osaan vastata osaan kysymyksiisi. Muut voivat todennäköisesti auttaa enemmän täällä.
<backtab>
kutsutaan ”toimintonäppäimeksi”, mutta se voidaan sitoa komentoon missä tahansa näppäinkartassa. (Unohda function-key-map
tässä yhteydessä.)
Vanilla Emacs (emacs -Q
, ei init-tiedostoa) sitoo joitain toimintonäppäimiä useisiin näppäinkarttoihin. Ja lataamasi kirjastot voivat tehdä niin.
Jos haluat todella poistaa toimintonäppäinsidokset, suosittelen, että työskentelet tiloista, jotka ovat voimassa tiettynä ajankohtana, missä tahansa kontekstissa. Käytä C-h k
-sovellusta saadaksesi selville, mihin tällainen avain on sidottu. Selvitä, mihin näppäinkarttaan se on sidottu (tyypillisesti mode-näppäinkartta), ja irrota se sitten kartalta (init-tiedostossa) Huuhtele ja toista.
Näet tietyssä näppäinkartassa tällä hetkellä sidotut näppäimet C-h M-k
(describe-keymap
), jota seuraa muuttuja, joka on sidottu näppäinkarttaan (tai jota seuraa varsinainen avainkartta, jos muuttujaa ei ole).Tarvitset kirjasto help-fns+.el
, jos haluat käyttää describe-keymap
.
Jotkut toimintonäppäimet (kuten backtab
ja f1
tai pikemminkin <backtab>
ja <f1>
( mutta pidän mieluummin alastomasta merkinnästä ) ovat melko vakiona. Muut ovat erityisesti Emacsille. Voit ajattele toimintonäppäintä loogiseksi nimeksi jollekin, jolla voi olla erilaisia fyysisiä toteutuksia. backtab
on tyypillisesti esimerkiksi S-TAB
. on se, mikä on ”käännös” -merkinnän takana, jonka näet joskus *Help*
-sivulla C-h k
.
( Mutta ihmettelen, miksi muuten kuin avainten ja näppäinkarttojen oppimiseksi (mikä on hyvä asia), teet tämän avainkokoonpanojen poistamisen. Tyypillisempää on yksinkertaisesti sitoa toinen avain komentoon, jonka sidontaa et halua e. Joka tapauksessa minun ei tarvitse ymmärtää miksi.)
Kommentit
- Luulen, että olen ehkä saanut selville, missä ne on määritelty. Vaikuttaa siltä, että ne on koodattu kovasti
keyboard.c
-lähdetiedostoon . Siksi niitä ei voida hävittää kokonaan. - Päivitin kysymystä siitä, mitä sain tähän mennessä. Luulen etsivän tuntematonta-tuntematonta puuttuvaa näppäinkarttaa
x-alternatives-map
jakey-translation-map
jainput-decode-map
, mutta en osaa ' selvittää, missä taustavälilehti ' määritelmä tulee …keyboard.c
lähdetiedosto . Siksi niitä ei voida hävittää kokonaan.