unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* Creating a "shortcut" key for "C-c C-"
@ 2003-04-22  1:55 Bill Clementson
  2003-04-22  6:15 ` Kai Großjohann
  0 siblings, 1 reply; 6+ messages in thread
From: Bill Clementson @ 2003-04-22  1:55 UTC (permalink / raw)


Does anyone know how to map a key to a specific portion of a pre-defined
mapping? For example, if a standard major mode binding is "C-c C-n", how
would you define a particular key to represent the "C-c C-" portion of
the binding so that it is possible to substitute <key>-n for the "C-c
C-n" command? I can't see how this would be possible with either
Super/Hyper keys or other keymap alternatives, but it would be useful to
be able to do this. 

I don't want to create a new keybinding for a command, I just want to be
able to indicate that a specific key will "globally" replace the "C-c
C-" portion of already defined major mode commands.

--
Bill Clementson

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Creating a "shortcut" key for "C-c C-"
  2003-04-22  1:55 Creating a "shortcut" key for "C-c C-" Bill Clementson
@ 2003-04-22  6:15 ` Kai Großjohann
  2003-04-22 14:38   ` Stefan Monnier
  0 siblings, 1 reply; 6+ messages in thread
From: Kai Großjohann @ 2003-04-22  6:15 UTC (permalink / raw)


Bill Clementson <bc19191@attbi.com> writes:

> I don't want to create a new keybinding for a command, I just want to be
> able to indicate that a specific key will "globally" replace the "C-c
> C-" portion of already defined major mode commands.

Whee.  It's easy to replace the "C-c" portion, but there is no easy
way to replace the "C-c C-" portion.  A modifier is quite closely
connected with the corresponding key.

Maybe it works to do

(global-set-key (kbd "<f4>") (kbd "C-c C-x @ c"))

The C-x @ c portion is event-apply-control-modifier.  But I've never
tried this.  I wonder if this approach does anything at all.

It would, however, be kinda cool.  When I use viper mode, I use
bindings starting with z that are similar to the standard C-x
bindings.  Now, many C-x bindings are of the form C-x a through C-x z
rather than C-x C-a through C-x C-z.  But if I wanted to do the same
for C-c bindings (for a major mode), then I'm in trouble -- most C-c
bindings are of the form C-c C-a through C-c C-z rather than C-c a
through C-c z.
-- 
file-error; Data: (Opening input file no such file or directory ~/.signature)

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Creating a "shortcut" key for "C-c C-"
  2003-04-22  6:15 ` Kai Großjohann
@ 2003-04-22 14:38   ` Stefan Monnier
  2003-04-23  3:45     ` Bill Clementson
  0 siblings, 1 reply; 6+ messages in thread
From: Stefan Monnier @ 2003-04-22 14:38 UTC (permalink / raw)


> Maybe it works to do
> (global-set-key (kbd "<f4>") (kbd "C-c C-x @ c"))

That won't work: the C-x @ c thingy works in function-key-map,
i.e. before almost all keymaps.
Furthermore, (define-key function-key-map [f8] "\C-c\C-x@c") won't work
either because the output of function-key-map is not fed back to
function-key-map.
And I can't think of any map that applies before function-key-map and
that can do such mapping.

But you can do:

   (defun C-cC- (prompt)
     (vconcat "\C-c" (event-apply-control-modifier prompt)))
   (define-key function-key-map [f8] 'C-cC-)


        Stefan

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Creating a "shortcut" key for "C-c C-"
  2003-04-22 14:38   ` Stefan Monnier
@ 2003-04-23  3:45     ` Bill Clementson
  2003-04-23 13:27       ` Stefan Monnier
  0 siblings, 1 reply; 6+ messages in thread
From: Bill Clementson @ 2003-04-23  3:45 UTC (permalink / raw)


"Stefan Monnier" <monnier+gnu.emacs.help/news/@flint.cs.yale.edu> writes:

> > Maybe it works to do
> > (global-set-key (kbd "<f4>") (kbd "C-c C-x @ c"))
> 
> That won't work: the C-x @ c thingy works in function-key-map,
> i.e. before almost all keymaps.
> Furthermore, (define-key function-key-map [f8] "\C-c\C-x@c") won't work
> either because the output of function-key-map is not fed back to
> function-key-map.
> And I can't think of any map that applies before function-key-map and
> that can do such mapping.
> 
> But you can do:
> 
>    (defun C-cC- (prompt)
      (vconcat "\C-c" (event-apply-control-modifier prompt)))
>    (define-key function-key-map [f8] 'C-cC-)

Sounds great; unfortunately, it doesn't work for me :-(

When I evaluate the above forms, I tried pressing "f8-n" in a buffer
that has a keybinding to "C-c C-n". I thought that the "f8-n" keybinding
would result in the execution of the same command that was bound to "C-c
C-n". Unfortunately, the only thing that happened was that an "n" was
inserted into the buffer. When I run the command "describe-key" on
"f8-n", it says that  "n runs the command self-insert-command
(self-insert-command N)". Am I missing some step?

Thanks for your help.
--
Bill Clementson

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Creating a "shortcut" key for "C-c C-"
  2003-04-23  3:45     ` Bill Clementson
@ 2003-04-23 13:27       ` Stefan Monnier
  2003-04-23 15:37         ` Reiner Steib
  0 siblings, 1 reply; 6+ messages in thread
From: Stefan Monnier @ 2003-04-23 13:27 UTC (permalink / raw)


>> (defun C-cC- (prompt)
>       (vconcat "\C-c" (event-apply-control-modifier prompt)))
>> (define-key function-key-map [f8] 'C-cC-)

> Sounds great; unfortunately, it doesn't work for me :-(

No idea here.  It works with the Emacs code on the CVS trunk.
Try something like

  (defun C-cC- (prompt)
    (message "Entering C-cC-...")
    (let ((key (event-apply-control-modifier prompt)))
      (message "e-a-c-m returned %s" key)
      (vconcat "\C-c" key)))

and look at the *Messages* buffer to see what e-a-c-m returned.
It should look like [14] or "\^N" if you pressed `n' after f8
(because the ascii code of C-n is 14).


        Stefan

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Creating a "shortcut" key for "C-c C-"
  2003-04-23 13:27       ` Stefan Monnier
@ 2003-04-23 15:37         ` Reiner Steib
  0 siblings, 0 replies; 6+ messages in thread
From: Reiner Steib @ 2003-04-23 15:37 UTC (permalink / raw)


On Wed, Apr 23 2003, Stefan Monnier wrote:

> No idea here.  It works with the Emacs code on the CVS trunk.

It works in Emacs 21.3 too.  But I had to eval (global-unset-key [f8])
before the (define-key ...), because I already had a global binding
for F8.

> It should look like [14] or "\^N" if you pressed `n' after f8
> (because the ascii code of C-n is 14).

,----
| Entering C-cC-...
| e-a-c-m returned [14]
`----

Bye, Reiner.
-- 
       ,,,
      (o o)
---ooO-(_)-Ooo--- PGP key available via WWW   http://rsteib.home.pages.de/

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2003-04-23 15:37 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-04-22  1:55 Creating a "shortcut" key for "C-c C-" Bill Clementson
2003-04-22  6:15 ` Kai Großjohann
2003-04-22 14:38   ` Stefan Monnier
2003-04-23  3:45     ` Bill Clementson
2003-04-23 13:27       ` Stefan Monnier
2003-04-23 15:37         ` Reiner Steib

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).