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
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
x-alternatives-map
éskey-translation-map
ésinput-decode-map
, de ' nem tudom kitalálni, hogy a backtab ' s definíciója… -ból származik.keyboard.c
forrásfájl . Ezért nincs lehetőség teljesen megsemmisíteni őket.