Czy można wyświetlić, czy przyciski Caps Lock i Num Lock są włączone w Emacs? Powodem, dla którego pytam, jest to, że jestem maszynistą jednoręczną i używam FrogPad. 20-klawiszowe urządzenie używa wielu sekwencji klawiszy shift, aby mieć pełną funkcjonalność standardowej klawiatury qwerty. Byłoby mi niezmiernie miło wyświetlać status zmiany, klawisza Caps Lock i klawiszy numlock w emacs. Mam googleed to i może znaleźć tylko posty dotyczące zmiany kluczy. Czy to możliwe?Wyświetlenie stanu blokad caps, num lock i klawiszy shift w Emacs
Odpowiedz
Po uruchomieniu emacsa na X Server, możesz napisać program C, status ciągłego monitorowania Shift, Caps i Numlock, kiedy zmiana nastąpi, wydrukuj ją na standardowe wyjście. W emacs uruchom ten program jako proces zewnętrzny, przetwórz jego dane wyjściowe za pomocą filtru procesu, a na koniec wyświetl stan Shift, Caps i Numlock w trybie mode-line.
Najniższy poziom wejścia klawiatury otrzymanych przez Emacs Lisp jest keyboard event, który łączy w sobie kod podstawowy z ON/OFF ustawienia modyfikatorów Emacs (meta
, control
, shift
, hyper
, super
i alt
). Z powodu tej kombinacji wydaje się, że nie można nauczyć się kodu lisp, gdy np. Naciśniesz i przytrzymasz klawisz Shift. Zauważ także, że nie ma reprezentacji CAPS LOCK ani NUM LOCK.
Na marginesie, emacs faktycznie odróżnia newline
i C-m
, ale na bardzo niskim poziomie w kodzie seplenienia, ten pierwszy jest przypisany do drugiego. Zobacz lisp/term/x-win.el
(zwykle znajduje się pod /usr/share/emacs/NN.X
), jeśli naprawdę chcesz poznać szczegóły.
Tak więc, od w ramach emacs lisp, uważam, że niemożliwe jest robienie tego, co chcesz.
Możliwe jest jednak osadzanie tekstu z zewnętrznych poleceń w linii trybu emacs i regularne aktualizowanie. Tak więc, w zasadzie można znaleźć polecenie linuxa, które zwraca status caps lock, shift i numlock i periodycznie wstrzykuje je do linii poleceń. To prawdopodobnie nie spełnia twoich potrzeb, ponieważ nie zaktualizuje modeliny w czasie rzeczywistym, gdy naciśniesz shift, capslock i numlock. Ale jeśli chcesz tego dokonać, sprawdź implementacje display-time-mode
i display-battery-mode
.
+1 dla końcówki wyświetlacza baterii; robi więcej niż tylko wyświetla stan baterii, więc prawdopodobnie warto zbadać, jeśli szukasz pomysłów, jak to wdrożyć (jeśli w rzeczywistości tak się nie dzieje). – tripleee
To nie jest możliwe w przenośnych Emacs, ale jeśli używasz X11:
(require 'dash)
(require 's)
(defun x-led-mask()
"Get the current status of the LED mask from X."
(with-temp-buffer
(call-process "xset" nil t nil "q")
(let ((led-mask-string
(->> (buffer-string)
s-lines
(--first (s-contains? "LED mask" it))
s-split-words
-last-item)))
(string-to-number led-mask-string 16))))
(defun caps-lock-on (led-mask)
"Return non-nil if caps lock is on."
(eq (logand led-mask 1) 1))
(define-minor-mode caps-lock-show-mode
"Display whether caps lock is on."
:global t
:lighter (:eval (if (caps-lock-on (x-led-mask)) " CAPS-LOCK" "")))
- 1. Jak przełączać Caps Lock w VB.NET?
- 2. emacs odpowiednik vima's shift-h i shift-l
- 3. Jak włączyć ostrzeżenie użytkownika CAPS LOCK w Flex/AIR?
- 4. Kombinacje klawiszy Python (klawisz Ctrl + Shift + klawisz)
- 5. Wyświetlanie ostatnich naciśnięć klawiszy w emacs
- 6. Jak ustawić wiązanie klawiszy CMD w Emacs?
- 7. Shift Focus za pomocą klawiszy strzałek w JavaScript
- 8. Powiązania klawiszy kończących kod w Emacs
- 9. Jak zapobiec pisaniu przez użytkowników za pomocą blokad?
- 10. Jak zamapować Caps Lock na Esc dla Vima w Mountain Lion, gdy keyremap4macbook nie działa?
- 11. Czy Emacs może rozróżniać między ctrl-r i ctrl-shift-r?
- 12. Splitu Caps w JavaScript
- 13. Emacs Shift-Tab, aby przesunąć w lewo blok
- 14. ConcurrentHashMap Czytanie i zapisywanie blokad
- 15. Nieoczekiwane zachowanie podczas używania blokad wątków python i importu circulair
- 16. Ctrl + U w emacs podczas używania złych powiązań klawiszy
- 17. Jak napisać wiązania klawiszy w emacs dla łatwego powtórzenia?
- 18. Jakie są twoje ulubione globalne powiązania klawiszy w emacs?
- 19. Programowo wyłącz blokadę caps
- 20. Dlaczego Shift + wiązanie strzałek nie działa w trybie clojure w terminalu emacs?
- 21. Num vs Integral
- 22. Prawy shift i podpisane całkowitą
- 23. Usuwanie blokad w Oracle 10
- 24. Haskell: making nadklasą Num
- 25. Emacs: print klucz wiążące dla polecenia lub listy wszystkich klawiszy
- 26. Java: Monitorowanie pozyskiwania blokad
- 27. W Haskell, czy istnieje dobry sposób, aby napisać funkcję konwersji num na num `toNum :: (Num a, Num b) => a -> b`?
- 28. Jaka jest różnica między "mutex" i "lock"?
- 29. wyboru Prevent z Shift + kliknięcie
- 30. Shift Key w GWT?
Jest to możliwe w wersji X11 Emacs, w tym sensie, że serwer X zapewni emacsowi z tej informacji. Jednak kod terminalu jest tak daleki od reszty Emacsa, że jest mało prawdopodobne, aby był dostępny na poziomie Lisp. (Na przykład, Emacs nie zna różnicy między klawiszem Return a Control-m w X, mimo że serwer X podaje te informacje, ale są one tłumaczone na "Newline", zanim cokolwiek stanie się możliwe. Wynika to z tego, że terminale * w konsoli nie mogą * rozróżniać dwóch przypadków.) – jrockway