Andreas Tille writes: > > I've done some key bindings in my .emacs (more detailed in an > *.el file called from .emacs but this is not the point): > > (global-set-key [C-left] 'backward-word) > (global-set-key [C-right] 'forward-word) > (global-set-key [C-prior] 'beginning-of-buffer) > (global-set-key [C-next] 'end-of-buffer) > > Well, this works fine under X :-). But under X the <Alt>-key > refuses to work as Meta. In any case I have to press <ESC>-... .
Check that your XF86Config file has this in it (in the Section "keyboard"): LeftAlt Meta RightAlt Meta > > While working at the console my <Alt>-key works fina as Meta, > but the key bindings mentioned above don't work. <C-x> or any > <C-[a-z]> works fine but it seems me that the Control key didn't > work together with other special keys. A hint for this > behaviour is that <C-h k><CTRL-LeftArrow> says that <left> > was pressed (the same when trying <C-h k><CTRL-F?> seems only > the F?-key to be pressed). > This is much harder. Here's how to do it. Basically we use dumpkeys and loadkeys to specify what happens when you press Control-left, then we teach emacs about it. 1. Use dumpkeys to dump the current key table % dumpkeys > k We'll copy that to k.orig to compare our changes after. 2. Search in this file for "Left" and we find keycode 105 = Left alt keycode 105 = Decr_Console Now, it would seem that all we have to do would be to add control keycode 105 = Control_left But this doesn't work, because loadkeys doesn't know the symbol name Control_left (or anything like it). However, there are lots of "spare" keysym names. We'll start with F50. So we make 2 changes. Define control left to use string F50 control keycode 105 = F50 and then tell it what characters to produce for F50. But what should they be? They could be anything you want, even something silly like "control left was pressed". However, this wouldn't be useful in emacs. Since left generated the sequence Esc [ D I tried using Esc [ C-d (meaning escape, left square bracked, control D). You want to ensure that this isn't used by anything else, and isn't a prefix of an existing emacs binding. I was lucky in this choice. So, we add this to file k: # left is Esc [ D, so make Control-left Esc [ C-d string F50 = "\033[\004" 3. Now use loadkeys to load these definitions in. You'll have to be root to do this bit. # loadkeys k Loading k # 4. Now, press C-h c Control-left in emacs. It should say ESC [ C-d is undefined That's good! Now to teach emacs what it means. We could do this: (global-set-key "\M-[\C-d" 'backward-word) which works, but better would be to actually tell emacs that Esc [ C-d (or Meta-[ C-d as emacs prints it) is Control-left. To do this: (define-key function-key-map "\M-[\C-d" '[C-left]) Now pressing C-h C-left should show: C-left runs the command backward-word It turns out that emacs already have backward-word bound to Control-left; otherwise we would have used (global-set-key '[C-left] 'backward-word) 5. Repeat for control-right. Since right is Esc [ D we can use Esc [ C-d. Prior is Esc [ 5 ~ so what should C-Prior generate? I tried C-h c Esc [ 5 # and that that wasn't used so I went with that, and Esc [ 6 # for Control-next.a So, the differences for loadkey are: % diff -c k.orig k *** k.orig Wed Apr 16 21:42:20 1997 --- k Wed Apr 16 22:41:01 1997 *************** *** 223,236 **** --- 223,243 ---- keycode 103 = Up keycode 104 = Prior shift keycode 104 = Scroll_Backward + control keycode 104 = F52 keycode 105 = Left alt keycode 105 = Decr_Console + # This doesn't work: + # control keycode 105 = Control_left + # So use F50 + control keycode 105 = F50 keycode 106 = Right alt keycode 106 = Incr_Console + control keycode 106 = F51 keycode 107 = Select keycode 108 = Down keycode 109 = Next shift keycode 109 = Scroll_Forward + control keycode 109 = F53 keycode 110 = Insert keycode 111 = Remove control alt keycode 111 = Boot *************** *** 346,348 **** --- 353,371 ---- compose '"' 'y' to 'ÿ' compose 's' 'z' to 'ß' compose 'i' 'j' to 'ÿ' + + # left is Esc [ D, so make Control-left Esc [ C-d + string F50 = "\033[\004" + + # similarly, make Control-Left Esc [ C-c + string F51 = "\033[\003" + + # F52: Control-Prior + # prior is Esc [ 5 ~ Let's use Esc [ 5 # for it + string F52 = "\033[5#" + + # F53: Control-Next + # next is Esc [ 6 ~ + string F53 = "\033[6#" + + % And the required elisp code is: (define-key function-key-map "\M-[\C-d" '[C-left]) (define-key function-key-map "\M-[\C-c" '[C-right]) (define-key function-key-map "\M-[5#" '[C-prior]) (define-key function-key-map "\M-[6#" '[C-next]) (global-set-key [C-prior] 'beginning-of-buffer) (global-set-key [C-next] 'end-of-buffer) -- TO UNSUBSCRIBE FROM THIS MAILING LIST: e-mail the word "unsubscribe" to [EMAIL PROTECTED] . Trouble? e-mail to [EMAIL PROTECTED] .