* Re: Capture ALL keystrokes [not found] <mailman.12372.1212057381.18990.help-gnu-emacs@gnu.org> @ 2008-05-30 9:57 ` harven 2008-05-30 11:21 ` Ben Forbes 0 siblings, 1 reply; 7+ messages in thread From: harven @ 2008-05-30 9:57 UTC (permalink / raw) To: help-gnu-emacs On May 29, 12:36 pm, "Ben Forbes" <bdfor...@gmail.com> wrote: > When some keystroke A is entered, I set a flag, and I want this flag > to be unset if any keystroke is entered except some keystroke B. So > basically, I only want keystroke B to have any effect if it is > preceded by keystroke A. How can I do this? Be more specific about what you are trying to achieve. Bound the following command to key A. Pressing the A key inserts the letter A. It then executes the command newline repeatedly if B is pressed any amount of time. (defun my-command () "After key A, key B executes the command newline repeatedly" (interactive) (insert "A") (while (equal (setq key (read-event)) ?B) (next-line)) (push key unread-command-events)) (global-set-key "A" 'my-command) ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Capture ALL keystrokes 2008-05-30 9:57 ` Capture ALL keystrokes harven @ 2008-05-30 11:21 ` Ben Forbes 0 siblings, 0 replies; 7+ messages in thread From: Ben Forbes @ 2008-05-30 11:21 UTC (permalink / raw) To: harven; +Cc: help-gnu-emacs > (defun my-command () > "After key A, key B executes the command newline repeatedly" > (interactive) > (insert "A") > (while (equal (setq key (read-event)) ?B) > (next-line)) > (push key unread-command-events)) > > (global-set-key "A" 'my-command) > That approach works quite well, thanks. My goal was to be able to call emms-random with a single keystroke when the initial call required two keystrokes. This is because I've put all my emms keystrokes after C-H-s-c to keep them organized. Now I can hit C-H-s-c C-H-s-r to call emms-random once, and every time I hit C-H-s-r after that, it calls emms-random again. It's a bit frivolous I guess, but it was more about learning emacs programming than anything else. Thanks for the help everyone. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Capture ALL keystrokes @ 2008-05-29 10:36 Ben Forbes 2008-05-29 11:11 ` Daniel Pittman 0 siblings, 1 reply; 7+ messages in thread From: Ben Forbes @ 2008-05-29 10:36 UTC (permalink / raw) To: help-gnu-emacs When some keystroke A is entered, I set a flag, and I want this flag to be unset if any keystroke is entered except some keystroke B. So basically, I only want keystroke B to have any effect if it is preceded by keystroke A. How can I do this? ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Capture ALL keystrokes 2008-05-29 10:36 Ben Forbes @ 2008-05-29 11:11 ` Daniel Pittman 2008-05-29 12:01 ` Ben Forbes 0 siblings, 1 reply; 7+ messages in thread From: Daniel Pittman @ 2008-05-29 11:11 UTC (permalink / raw) To: help-gnu-emacs "Ben Forbes" <bdforbes@gmail.com> writes: > When some keystroke A is entered, I set a flag, and I want this flag > to be unset if any keystroke is entered except some keystroke B. So > basically, I only want keystroke B to have any effect if it is > preceded by keystroke A. How can I do this? The standard way would be: (define-key global-map [(a)(b)] #'my-function) Alternately, make a keymap, point the `a' key to it, and then install handlers into it. Your approach is, in essence, "doing it wrong." Regards, Daniel ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Capture ALL keystrokes 2008-05-29 11:11 ` Daniel Pittman @ 2008-05-29 12:01 ` Ben Forbes 2008-05-29 13:32 ` Lennart Borgman (gmail) 0 siblings, 1 reply; 7+ messages in thread From: Ben Forbes @ 2008-05-29 12:01 UTC (permalink / raw) To: Daniel Pittman; +Cc: help-gnu-emacs Yes I thought my approach seemed too complex. I don't think your first suggestion will work, because I want to be able to hit AB, ABB, ABBB, ABBBB etc, where each repeated keystroke B repeats the command. Could you expand on the second option? It sounds promising, thanks. On Thu, May 29, 2008 at 9:11 PM, Daniel Pittman <daniel@rimspace.net> wrote: > "Ben Forbes" <bdforbes@gmail.com> writes: > >> When some keystroke A is entered, I set a flag, and I want this flag >> to be unset if any keystroke is entered except some keystroke B. So >> basically, I only want keystroke B to have any effect if it is >> preceded by keystroke A. How can I do this? > > The standard way would be: > > (define-key global-map [(a)(b)] #'my-function) > > Alternately, make a keymap, point the `a' key to it, and then install > handlers into it. > > Your approach is, in essence, "doing it wrong." > > Regards, > Daniel > > > > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Capture ALL keystrokes 2008-05-29 12:01 ` Ben Forbes @ 2008-05-29 13:32 ` Lennart Borgman (gmail) 2008-05-29 15:10 ` Tassilo Horn 0 siblings, 1 reply; 7+ messages in thread From: Lennart Borgman (gmail) @ 2008-05-29 13:32 UTC (permalink / raw) To: Ben Forbes; +Cc: Daniel Pittman, help-gnu-emacs Have a look at kmacro-call-macro which does something similar. It is bound to "C-x e" and you repeat it with just "e". Ben Forbes wrote: > Yes I thought my approach seemed too complex. I don't think your first > suggestion will work, because I want to be able to hit AB, ABB, ABBB, > ABBBB etc, where each repeated keystroke B repeats the command. Could > you expand on the second option? It sounds promising, thanks. > > On Thu, May 29, 2008 at 9:11 PM, Daniel Pittman <daniel@rimspace.net> wrote: >> "Ben Forbes" <bdforbes@gmail.com> writes: >> >>> When some keystroke A is entered, I set a flag, and I want this flag >>> to be unset if any keystroke is entered except some keystroke B. So >>> basically, I only want keystroke B to have any effect if it is >>> preceded by keystroke A. How can I do this? >> The standard way would be: >> >> (define-key global-map [(a)(b)] #'my-function) >> >> Alternately, make a keymap, point the `a' key to it, and then install >> handlers into it. >> >> Your approach is, in essence, "doing it wrong." >> >> Regards, >> Daniel >> >> >> >> > > > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Capture ALL keystrokes 2008-05-29 13:32 ` Lennart Borgman (gmail) @ 2008-05-29 15:10 ` Tassilo Horn 0 siblings, 0 replies; 7+ messages in thread From: Tassilo Horn @ 2008-05-29 15:10 UTC (permalink / raw) To: help-gnu-emacs "Lennart Borgman (gmail)" <lennart.borgman@gmail.com> writes: Hi, > Have a look at kmacro-call-macro which does something similar. It is > bound to "C-x e" and you repeat it with just "e". Another possibility is to use a timer and a minor mode. The first keystroke enables the mode which will be disabled by a timer. Any further keystroke resets the timer to its initial value. If you use EMMS, have a look at ,---- | C-c + runs the command emms-volume-mode-plus, which is an interactive compiled | Lisp function in `emms-volume.el'. | | It is bound to C-c +. | | (emms-volume-mode-plus) | | Raise volume and enable or extend the `emms-volume-minor-mode' timeout. `---- Bye, Tassilo ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2008-05-30 11:21 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <mailman.12372.1212057381.18990.help-gnu-emacs@gnu.org> 2008-05-30 9:57 ` Capture ALL keystrokes harven 2008-05-30 11:21 ` Ben Forbes 2008-05-29 10:36 Ben Forbes 2008-05-29 11:11 ` Daniel Pittman 2008-05-29 12:01 ` Ben Forbes 2008-05-29 13:32 ` Lennart Borgman (gmail) 2008-05-29 15:10 ` Tassilo Horn
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).