Próbuję uruchomić Emacsa w terminalu. W preferencjach terminalu włączyłem opcję „Użyj opcji jako meta”, więc około 95% działa poprawnie.
Sekwencja klawiszy ctrl- / (lub w notacji Emacsa C- /) to „cofnij”. Ta sekwencja klawiszy powoduje, że terminal dzwoni dzwonkiem. Jak to naprawić?
Odpowiedzi:
Sterowanie
/
nie jest częścią zestawu standardowych kodów sterujących . Nie jest bezpośrednio reprezentowany jako naciśnięcie klawisza w wielu terminalnych emulacjach. Takie naciśnięcie klawisza jest właściwie wykrywalne tylko w niektórych „trybach scancode” lub „trybie GUI” specyficznych dla platformy (gdzie API mówi dokładnie, które klucze i modyfikatory są używane). Emulator terminala wydaje sygnał dźwiękowy, ponieważ jest to właściwie nieprawidłowe naciśnięcie klawisza.Standardowe kody kontrolne obejmują tylko wersje „Kontrolne” programu
@
A
-Z
[\]^_
(ASCII 0–31), oraz?
(ASCII 127)W większości programów emulatorów terminali działających z większością układów klawiszy w USA może być konieczne naciśnięcie przycisku w Shiftcelu wygenerowania niektórych „kodów sterujących”:
@
jest Shift2)^
jest Shift6)_
jest Shift-)?
jest Shift/); DO-? jest zwykle generowany przez albo Backspace(na klawiaturach Apple, klawisz oznaczony po prostu „usuń” bez dodatkowego symbolu ⌦) lub Delete(ten z ⌦ na klawiaturach Apple).W Emacach opartych na tty zwykle możesz użyć C-_
undo
zamiast zamiast C- /.źródło
Ctrl- / wysyła 0x1f, co odpowiada Ctrl-_ od dni VT102. Istnieje wiele emulatorów VT100, ale w rzeczywistości są to emulatory VT102. iTerm2 działa, ponieważ śledzi to zachowanie.
Tylko emulatory ściśle zgodne ze specyfikacją VT100 nie mogą wysłać Ctrl- /. Wierzę, że aplikacja Terminal jest jedną z nich.
VT100 maskuje 2 najbardziej znaczące bity 7-bitowego ASCII po naciśnięciu klawisza sterującego. / to 0x2f, o to 0x6f. Gdy 2 bity są maskowane, oba mają wartość 0x0f. VT100 może wysyłać Ctrl-o, ale nie Ctrl- /.
źródło