From: eaton@pacersoft.com (Mark W. Eaton)
Newsgroups: comp.unix.aix
Subject: Re: GNU emacs
Date: 18 Nov 92 18:47:22 GMT
Followup-To: comp.unix.aix
Organization: Pacer Software, Inc.

In article <1992Nov17.034640.28336@chpc.utexas.edu>, jones@chpc.utexas.edu
(Willaim L. Jones) wrote:
> 
> Has anyone one noticed that arrow keys do not work in gnu emacs 18.59-15.57.
> 
> Does anyone have a solution or any insights to the problem.
> 
> My only insight is the fact that AIX does not give emacs all of the 
> characters that the arrow key generates to emacs at the same time 
> like every other system.
> 
> Bill Jones

Yes, keymapping is a mess under AIX compared to any other Unix system. 
Since I still haven't gotten emacs working fully with my customizations (I
use both the arrow keys and the keypad), I use emacs on another Unix system
and edit the files I need over NFS.  I hav a file from some kind netter
below which exemplifies the kind of work needed to map keys correctly. 
Unfortunately, I don't have the netter's name, but let him/her be thanked
here.

FWIW, this has been heavily customized; you should extract the bits you
need.

Mark Eaton
Pacer Software, Inc.
eaton@pacersoft.com

! .keymap - An example for xterm keymaps.
!
! Default keymap: keypad is in NumLock state.
! ScrollLock switches to emacs-keymap, F10 to ftp-keymap.
! A few other keys also have special effects.
!
*VT100.Translations: #override \
	Mod1 Shift<Key>A:	string(0x43) \n\
	Mod1	<Key>A:		string(0x63) \n\
	Mod1	<Key>Delete:	string(0x17) \n\
	Shift	<Key>Delete:	string(0x7f) \n\
		<Key>Delete:	string(0x08) \n\
		<Key>L2:	string("!!") string(0x0d) \n\
		<Key>L4:	string(0x03) \n\
		<Key>Linefeed:	string(" | more") string(0x0d) \n\
		<Key>F10:	keymap(ftp) \n\
		<Key>R1:	string("(") \n\
		<Key>R2:	string(")") \n\
		<Key>R3:	keymap(emacspad) \n\
		<Key>Num_Lock:	ignore() \n\
		<Key>R4:	string("=") \n\
		<Key>R5:	string("/") \n\
		<Key>R6:	string("*") \n\
		<Key>KP_Subtract: string("-") \n\
		<Key>R7:	string("7") \n\
		<Key>Up:	string("8") \n\
		<Key>R9:	string("9") \n\
		<Key>KP_Add:	string("+") \n\
		<Key>Left:	string("4") \n\
		<Key>R11:	string("5") \n\
		<Key>Right:	string("6") \n\
		<Key>R13:	string("1") \n\
		<Key>Down:	string("2") \n\
		<Key>R15:	string("3") \n\
		<Key>Insert:	string("0") \n\
		<Key>KP_Decimal: string(".") \n\
		<Key>KP_Enter:	string(0x0d)

! Emacs keymap:
! L* and F* keys are bound to the default escape sequences. Modify to suit
! your taste ...
! The right keypad sends different strings for different modifier states:
! Unmodified keys generally do what you'd expect.
! <Control> send modified movement commands (like forward-word ...)
! <Shift> and <Lock> generally send the characters printed on the keys.
! <Meta> sends the associated number as numeric argument for a command.
! Numlock switches back to the default keymap.
! Some bindings refer to elisp functions I made up. I have listed these
! further below. See for yourself whether you find them useful.
!
*VT100.emacspadKeymap.translations: \
		<Key>Delete:	string(0x7f) \n\
		<Key>L1:	keymap(None) string(0x1b) string("[192z") \n\
		<Key>L2:	string(0x1b) string("[193z") \n\
		<Key>L3:	string(0x1b) string("[194z") \n\
		<Key>L4:	string(0x1b) string("[195z") \n\
		<Key>L5:	string(0x1b) string("[196z") \n\
		<Key>L6:	string(0x1b) string("[197z") \n\
		<Key>L7:	string(0x1b) string("[198z") \n\
		<Key>L8:	string(0x1b) string("[199z") \n\
		<Key>L9:	string(0x1b) string("[200z") \n\
		<Key>L10:	string(0x1b) string("[201z") \n\
		<Key>F1:	string(0x1b) string("[224z") \n\
		<Key>F2:	string(0x1b) string("[225z") \n\
		<Key>F3:	string(0x1b) string("[226z") \n\
		<Key>F4:	string(0x1b) string("[227z") \n\
		<Key>F5:	string(0x1b) string("[228z") \n\
		<Key>F6:	string(0x1b) string("[229z") \n\
		<Key>F7:	string(0x1b) string("[230z") \n\
		<Key>F8:	string(0x1b) string("[231z") \n\
		<Key>F9:	string(0x1b) string("[232z") \n\
		<Key>F10:	string(0x1b) string("[233z") \n\
		<Key>KP_F1: 	string(0x1b) string("[234z") \n\
		<Key>KP_F2: 	string(0x1b) string("[235z") \n\
		<Key>KP_F3:	string(0x1b) string("[236z") \n\
		<Key>KP_F4:	string(0x1b) string("[237z") \n\
		<Key>Break:	string(0x1b) string("[223z") \n\
		<Key>Help:	string(0x08) \n\
		<Key>R1:	string(0x18) string(0x02) \n\
		<Key>R2:	string(0x1b) \
				string("xelectric-command-history") \
				string(0x0d) \n\
		<Key>R3:	string(0x07) \n\
		<Key>Num_Lock:	keymap(None) \n\
	Ctrl	<Key>R4:	string(0x1b) string("xgoto-line") \
				string(0x0d) \n\
	Mod1	<Key>R4:	string(0x1b) string("xwhat-cursor-position") \
				string(0x0d) \n\
	Shift	<Key>R4:	string("=") \n\
	Lock	<Key>R4:	string("=") \n\
		<Key>R4:	string(0x1b) string("xwhat-line") \
				string(0x0d) \n\
	Ctrl	<Key>R5:	string(0x12) \n\
	Mod1	<Key>R5:	string(0x1b) string("xre-search-forward") \
				string(0x0d) \n\
	Shift	<Key>R5:	string("/") \n\
	Lock	<Key>R5:	string("/") \n\
		<Key>R5:	string(0x13) \n\
	Ctrl	<Key>R6:	string(0x1b) string("xtoggle-read-only") \
				string(0x0d) \n\
	Mod1	<Key>R6:	string(0x1b) string("xrevert-buffer")\n\
	Shift	<Key>R6:	string("*") \n\
	Lock	<Key>R6:	string("*") \n\
		<Key>R6:	string(0x1b) string("xauto-fill-mode") \
				string(0x0d) \n\
	Ctrl	<Key>KP_Subtract: string(0x1b) string("k") \n\
	Mod1	<Key>KP_Subtract: string(0x1b) string("-") \n\
	Shift	<Key>KP_Subtract: string("-") \n\
	Lock	<Key>KP_Subtract: string("-") \n\
		<Key>KP_Subtract: string(0x0b) \n\
	Ctrl	<Key>R7:	string(0x1b) string("xbackward-beg-of-line") \
				string(0x0d) \n\
	Mod1	<Key>R7:	string(0x1b) string("7") \n\
	Shift	<Key>R7:	string("7") \n\
	Lock	<Key>R7:	string("7") \n\
		<Key>R7:	string(0x1b) string("<") \n\
	Ctrl	<Key>Up:	string(0x1b) string("xbackward-paragraph") \
				string(0x0d) \n\
	Mod1	<Key>Up:	string(0x1b) string("8") \n\
	Shift	<Key>Up:	string("8") \n\
	Lock	<Key>Up:	string("8") \n\
		<Key>Up:	string(0x10) \n\
	Ctrl	<Key>R9:	string(0x1b) string("xbackward-end-of-line") \
				string(0x0d) \n\
	Mod1	<Key>R9:	string(0x1b) string("9") \n\
	Shift	<Key>R9:	string("9") \n\
	Lock	<Key>R9:	string("9") \n\
		<Key>R9:	string(0x1b) string("v") \n\
	Ctrl	<Key>KP_Add:	string(0x18) string("1") \n\
	Mod1	<Key>KP_Add:	string(0x18) string("2") \n\
	Shift	<Key>KP_Add:	string("+") \n\
	Lock	<Key>KP_Add:	string("+") \n\
		<Key>KP_Add:	string(0x18) string("o") \n\
	Ctrl	<Key>Left:	string(0x1b) string("b") \n\
	Mod1	<Key>Left:	string(0x1b) string("4") \n\
	Shift	<Key>Left:	string("4") \n\
	Lock	<Key>Left:	string("4") \n\
		<Key>Left:	string(0x02) \n\
	Ctrl	<Key>R11:	string(0x1b) string("xback-to-indentation") \
				string(0x0d) \n\
	Mod1	<Key>R11:	string(0x1b) string("5") \n\
	Shift	<Key>R11:	string("5") \n\
	Lock	<Key>R11:	string("5") \n\
		<Key>R11:	string(0x0c) \n\
	Ctrl	<Key>Right:	string(0x1b) string("f") \n\
	Mod1	<Key>Right:	string(0x1b) string("6") \n\
	Shift	<Key>Right:	string("6") \n\
	Lock	<Key>Right:	string("6") \n\
		<Key>Right:	string(0x06) \n\
	Ctrl	<Key>R13:	string(0x1b) string("xforward-beg-of-line") \
				string(0x0d) \n\
	Mod1	<Key>R13:	string(0x1b) string("1") \n\
	Shift	<Key>R13:	string("1") \n\
	Lock	<Key>R13:	string("1") \n\
		<Key>R13:	string(0x1b) string(">") \n\
	Ctrl	<Key>Down:	string(0x1b) string("xforward-paragraph") \
				string(0x0d) \n\
	Mod1	<Key>Down:	string(0x1b) string("2") \n\
	Shift	<Key>Down:	string("2") \n\
	Lock	<Key>Down:	string("2") \n\
		<Key>Down:	string(0x0e) \n\
	Ctrl	<Key>R15:	string(0x1b) string("xforward-end-of-line") \
				string(0x0d) \n\
	Mod1	<Key>R15:	string(0x1b) string("3") \n\
	Shift	<Key>R15:	string("3") \n\
	Lock	<Key>R15:	string("3") \n\
		<Key>R15:	string(0x16) \n\
	Ctrl	<Key>Insert:	string(0x1b) string("xforward-to-indentation")\
				string(0x0d) \n\
	Mod1	<Key>Insert:	string(0x1b) string("0") \n\
	Shift	<Key>Insert:	string("0") \n\
	Lock	<Key>Insert:	string("0") \n\
		<Key>Insert:	string(0x1b) string("xset-mark-command") \
				string(0x0d) \n\
	Ctrl	<Key>KP_Decimal: string(0x1b) string("d") \n\
	Mod1	<Key>KP_Decimal: string(0x1b) string(".") \n\
	Shift	<Key>KP_Decimal: string(".") \n\
	Lock	<Key>KP_Decimal: string(".") \n\
		<Key>KP_Decimal: string(0x04) \n\
		<Key>Alt_L:	string(0x18) \n\
		<Key>Alt_R:	string(0x18) string("4") \n\
		<Key>Super_R:	string(0x03)

! ftp keymap: avoid typos when I ftp ...
*VT100.ftpKeymap.translations: \
		<Key>R3:	keymap(emacspad) \n\
		<Key>Num_Lock:	keymap(None) \n\
		<Key>F10:	string("ftp ") \n\
		<Key>KP_F1:	string("anonymous") string(0x0d) \n\
		<Key>KP_F2:	string("* put your email address here *") \
				string(0x0d)
Newsgroups: comp.unix.aix