Hogyan határozható meg a < backtab > kulcs; hogyan lehet megsemmisíteni; és hogyan lehet újat létrehozni a semmiből?

Logók
Alapvetően mit ” Az elmúlt hetekben megpróbáltam egyenként beállítani a kulcstartóimat, így egyenként végigjártam az egyes módokat, és egyenként teljesen kitisztítottam a billentyűzetét. Ezután kösse össze azokat a funkciókat, amelyeket hasznosnak találok.
Ezt oktatási célokra is megcsinálom, hogy többet tudjak meg a kulcsképek belső működéséről, azok összefüggéséről, kezeléséről stb.

De ami elakadt, az az, hogy egyes kulcsok (vagy functions / macros hogyan nem; biztos, hogy hívják őket) meg vannak határozva. Például <backtab>, <C-return>, <C-tab>, <C-iso-lefttab> stb.

A function-key-map és local-function-map parancsokban minden funkcióbillentyűt lekötöttem a következő paranccsal: (setf (cdr <keymap>) nil)

De ezek a kulcsok még mindig fennállnak.

Talán csak zavaros vagyok magam úgy, hogy megpróbáltam egyszerre körbefogni a többféle absztrakciós szintet. > Tehát hogyan törölném el teljesen ezeket a kulcsokat, hogy az első elvekből induljak ki, és magam alkothassam meg őket (saját egyedi nevükkel és funkcionalitásukkal)?


Bónuszkérdés
Miért (define-key input-decode-map [?\C-i] (kbd "<C-i>")) létrehoz egy absztrakciót, amely értelmezi a C-i és <C-i> másképp?
Control + i == C-i == ^I == TAB
Control + i = = <C-i>! = TAB
Van-e ennek valami köze gondolkodásom paradigmaváltásához, amelynek meg kell történnie? hogy jobban megértsem a billentyűzeteket?


Úgy gondolom, hogy a jövőben valóban segítene nekem és az embereknek, ha valaki triviális és összetett példát tudna készíteni ilyen formátumban (feltételezve, hogy a jelenlegi fő mód text-mode):

gombnyomás Control + Visszatérés ->
local-function-keymap Control + Backspace = <C-backspace> ->
text-mode-map <C-backspace> = nil ->
global-map <C-backspace> = backward-kill-word


UPDATE
Megtaláltam, hogy (fajta) megsemmisíti a függvényeket, majd visszakapcsolja őket a hozzájuk tartozó ASCII kulcsokra:

(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]) 

De még ha valamilyen oknál fogva sem is újraindítom a kulcsokat, tudtom nélkül a mod a kulcsok még működnek. Tehát van olyan kulcstérkép, amiről éppen nincs tudomásom?

if <tab> = undefined C-<tab> = defined 

Megjegyzések

  • Ez rejtély számomra. 🙁 Van ' is x-alternatives-map és key-translation-map és input-decode-map, de ' nem tudom kitalálni, hogy a backtab ' s definíciója… -ból származik.
  • Azt hiszem, megtudhattam, hol vannak meghatározva. Úgy tűnik, hogy keményen kódolva vannak a keyboard.c forrásfájl . Ezért nincs lehetőség teljesen megsemmisíteni őket.

Válasz

Talán meg tudom válaszolni a kérdés (ek) egy részét. Mások itt valószínűleg többet tudnak segíteni.

<backtab> funkcióbillentyűnek hívják, de bármelyik billentyűtérképhez parancshoz köthető. (Felejtsd el a function-key-map témát ebben a kontextusban.)

Vanilla Emacs (emacs -Q, nincs init fájl) egyes funkciógombokat különféle billentyűtérképekben köt le. És a betöltött könyvtárak is megtehetik.

Ha valóban el akarja távolítani a funkcióbillentyűk összerendelését, azt javaslom, hogy az adott pillanatban, adott kontextusban aktuális üzemmódokból dolgozzon. A C-h k használatával megtudhatja, hogy mihez van kötve egy ilyen kulcs. Határozza meg, hogy milyen kulcstérképhez van kötve (általában egy módos billentyűtérkép), majd kösse le a térképről (az init fájlban) öblítse le és ismételje meg.

A C-h M-k (describe-keymap), amelyet egy kulcstérképhez kötött változó követ (vagy egy tényleges kulcstérkép követi, ha nincs változó).Szüksége van a help-fns+.el könyvtárra, ha a describe-keymap. / p>

Néhány funkcióbillentyű (például backtab és f1, vagy inkább <backtab> és a <f1> ( de én inkább a meztelen jelölést szeretem ) meglehetősen szabványosak. Mások az Emac-okra jellemzőek. gondoljon egy funkciókulcsra, mint egy logikai név valamire, amelynek különböző fizikai megvalósításai lehetnek. backtab általában lényegében például S-TAB. Ez ez áll a *Help* -ban a C-h k számára néha megjelenő “translation” jelzés mögött.


( De kíváncsi vagyok arra, hogy miért nem a kulcsok és a billentyûkiosztás megismerése érdekében (ami jó dolog), a kulcskötések eltávolításának ezt a gyakorlatát hajtja végre. Jellemzõbb, ha egyszerûen egy másik kulcsot köt a parancshoz, amelynek a kötését nem e. Egyébként nem kell értenem, hogy miért.)

Megjegyzések

  • Azt hiszem, megtudhattam, hogy hol vannak meghatározva. Úgy tűnik, hogy keményen be vannak kódolva a keyboard.c forrásfájlba . Ezért nincs lehetőség teljesen megsemmisíteni őket.
  • Frissítettem azt a kérdést, hogy mit kaptam eddig. Azt hiszem, lehet, hogy egy ismeretlen-ismeretlen hiányzó billentyűzetet keresek

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük