Kuinka avain < backtab > määritetään; miten se tuhotaan; ja miten luoda uusi tyhjästä?

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

  • Se ' on mysteeri minulle. 🙁 Siellä ' on myös x-alternatives-map ja key-translation-map ja input-decode-map, mutta en osaa ' selvittää, missä taustavälilehti ' määritelmä tulee …
  • Luulen, että olen ehkä saanut selville, missä ne on määritelty. Vaikuttaa siltä, että ne on koodattu kovasti koodiin keyboard.c lähdetiedosto . Siksi niitä ei voida hävittää kokonaan.

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

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *