Thread View: comp.sys.next.misc
2 messages
2 total messages
Started by Steve Anderson
Fri, 10 Apr 1992 20:01
NeXT Emacs key(pad) bindings?
Author: Steve Anderson
Date: Fri, 10 Apr 1992 20:01
Date: Fri, 10 Apr 1992 20:01
16 lines
1198 bytes
1198 bytes
I posted this question a while ago, but got no answers. I can't believe nobody knows, so it must be that everyone just assumed it was too stupid a question to bother with. Well, I'd appreciate it if someone would humor me and answer it (anyway). What keycodes do the NeXT keypad keys generate, that I can bind to functions in Emacs (I mean using the Emacs 2.1 frontend for emacs)? I'm used to having a ton of function keys so as not to have to remember what control-meta-cokebottle does, and the only candidates on the NeXT are those (otherwise useless) keypad keys). But I can't see any place where their codes are documented, and I seem to just get numbers from them. Which I can't believe is the end of the story. Oh, my keyboard is an old-style one. --Steve Anderson
Re: NeXT Emacs key(pad) bindings?
Author: Pia Kraft
Date: Wed, 15 Apr 1992 16:19
Date: Wed, 15 Apr 1992 16:19
195 lines
6776 bytes
6776 bytes
here is a patch for EtermView.m V2.1.
use: patch -R EtermView.m <keypad.patch
--------------------------------- cut here ----------------------------
#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create the files:
# keypad.patch
# This archive created: Wed Apr 15 16:20:03 1992
export PATH; PATH=/bin:$PATH
if test -f 'keypad.patch'
then
echo shar: will not over-write existing file "'keypad.patch'"
else
cat << \SHAR_EOF > 'keypad.patch'
*** EtermView.m Sun Jan 5 14:15:10 1992
--- EtermView.m.ORG Tue Oct 22 23:22:02 1991
***************
*** 78,124 ****
}
}
- #define CTRLKEY(x) (x & 31)
- #define METAKEY(x) (x | 0x80)
-
- static int mapNumericKey (int code)
- {
- static struct
- {
- int keyCode;
- int character;
- } numericMap[] = {
- {'1','q'},
- {'2','r'},
- {'3','s'},
- {'4','t'},
- {'5','u'},
- {'6','v'},
- {'7','w'},
- {'8','x'},
- {'9','y'},
- {'0','p'},
- {'.','n'},
- {0x03,'M'},
- {'+','l'},
- {'-','m'},
- {'*','S'},
- {'/','R'},
- {'=','Q'},
- {'`','P'},
- {0x00,0}
- };
- int i = 0;
-
- while (numericMap[i].keyCode)
- {
- if (code == numericMap[i].keyCode)
- return numericMap[i].character;
- ++i;
- }
- return -1;
- }
-
@implementation EtermView
+ initialize
--- 78,83 ----
***************
*** 331,349 ****
int code;
int start=0, n;
! if ((theEvent->flags & NX_NUMERICPADMASK) &&
theEvent->data.key.charCode >= 0xac &&
theEvent->data.key.charCode <= 0xaf) {
/* Arrow keys (left, up, right, down) */
buf[i++] = "\002\020\006\016"[theEvent->data.key.charCode - 0xac];
}
! /* map to vt100 key */
! else if ((theEvent->flags & NX_NUMERICPADMASK) &&
! (code = mapNumericKey(theEvent->data.key.charCode)) != -1) {
! buf[i++] = 0x1b;
! buf[i++] = 'O';
! buf[i++] = code;
! }
else if (theEvent->flags & NX_ALTERNATEMASK) {
/* Handle ALT key as a META key */
code = kc_keyforcode(theEvent->data.key.keyCode, theEvent->flags);
--- 290,306 ----
int code;
int start=0, n;
! if (theEvent->flags & NX_NUMERICPADMASK &&
theEvent->data.key.charCode >= 0xac &&
theEvent->data.key.charCode <= 0xaf) {
/* Arrow keys (left, up, right, down) */
buf[i++] = "\002\020\006\016"[theEvent->data.key.charCode - 0xac];
}
! else if (theEvent->flags & NX_NUMERICPADMASK &&
! theEvent->data.key.charCode == 0x03) {
! /* Enter key */
! buf[i++] = '\r';
! }
else if (theEvent->flags & NX_ALTERNATEMASK) {
/* Handle ALT key as a META key */
code = kc_keyforcode(theEvent->data.key.keyCode, theEvent->flags);
***************
*** 366,376 ****
/* Arrow keys (left, up, right, down) */
buf[i++] = "\002\020\006\016"[theEvent->data.key.charCode - 0xac];
}
! else if (theEvent->flags & NX_NUMERICPADMASK &&
! (code = mapNumericKey(theEvent->data.key.charCode)) != -1) {
! buf[i++] = 0x1b;
! buf[i++] = 'O';
! buf[i++] = code;
}
else if (theEvent->flags & NX_ALTERNATEMASK) {
/* Handle ALT key as a META key */
--- 323,332 ----
/* Arrow keys (left, up, right, down) */
buf[i++] = "\002\020\006\016"[theEvent->data.key.charCode - 0xac];
}
! else if (theEvent->flags & NX_NUMERICPADMASK &&
! theEvent->data.key.charCode == 0x03) {
! /* Enter key */
! buf[i++] = '\r';
}
else if (theEvent->flags & NX_ALTERNATEMASK) {
/* Handle ALT key as a META key */
SHAR_EOF
fi # end of overwriting check
# End of shell archive
exit 0
---------------------------- End of Shell-Archive --------------------
Your .emacs looks probably like this:
(setq term-setup-hook
(function
(lambda ()
(global-set-key "\M-Oy" 'scroll-down) ;; 9
(global-set-key "\M-Os" 'scroll-up) ;; 3
(global-set-key "\M-Ow" 'beginning-of-line) ;; 7
(global-set-key "\M-Oq" 'end-of-line) ;; 1
(global-set-key "\M-Ov" 'forward-char) ;; 6
(global-set-key "\M-Ot" 'backward-char) ;; 4
(global-set-key "\M-Ox" 'previous-line) ;; 8
(global-set-key "\M-Or" 'next-line) ;; 2
(global-set-key "\M-OM" "
(global-set-key "\M-Op" 'switch-to-buffer) ;; 0
(global-set-key "\M-OS" 'switch-to-buffer-other-window)
(global-set-key "\M-OP" 'other-window) ;; '
(global-set-key "\M-OQ" 'split-window-vertically) ;; =
(global-set-key "\M-OR" 'delete-other-windows) ;; /
(load "mouse-binding")
)))
I've created an /NextLibrary/Keyboards/emacs.keymapping with
/NextDevelopers/Demos/Keyboard:
\ is ctrl-/
| is ctrl-.
~ is ctrl-,
` is ctrl-'
begin 644 emacs.keymapping
M2UE-4````WP```4!`E)7`@%1`P)35@0"5%4%%@L,#1$7%!43&!(A(B,D)2@G
M)@D/%A!1____#@!<`'P`'``<`.,`ZP`<`!P.`%T`?0`=`!T`)P"Z`!T`'0X`
M6P![`!L`&P!@`*H`&P`;#0!I`$D`"0`)`,$`]0`)``D-`&\`3P`/``\`^0#I
M``\`#PT`<`!0`!``$`%P`5``$``0``&L_P``,```+@```_\``:\``:X``#$`
M`#0``#8``#,``"L``:T``#(``#7__P(`?P`("@`]`"L!N0&Q#@`M`%\`'P`?
M`+$`T``?`!\*`#@`*@&P`+0*`#D`*`"L`*L*`#``*0"M`+L``#<``#@``#D`
M`2T``"H*`&``?@!@`;L.`#T`?``]`!P`/0!\```81@X`+P!<`"\`'``O`%P`
M``H`_Q``#0`##@`G`"(`8````*D!K@``'``*`#L`.@&R`:(-`&P`3``,``P`
M^`#H``P`#`X`+``\`'X```#+`:,```<`#@`N`#X`?````+P!LP``Q`0.`"\`
M/P!<```!N`"_`?Y$``T`>@!:`!H`&@#/`5<`&@`:#0!X`%@`&``8`;0!S@`8
M`!@-`&,`0P`#``,!XP'3``,``PT`=@!6`!8`%@'6`>``%@`6#0!B`$(``@`"
M`>4!\@`"``(-`&T`30`-``T!;0'8``T`#0T`;@!.``X`#@#$`:\`#@`.#``@
M````@```#0!A`$$``0`!`,H`QP`!``$-`',`4P`3`!,`^P"G`!,`$PT`9`!$
M``0`!`%$`;8`!``$#0!F`$8`!@`&`*8!K``&``8-`&<`1P`'``<`\0#A``<`
M!PT`:P!+``L`"P#.`*\`"P`+#0!J`$H`"@`*`,8`K@`*``H-`&@`2``(``@`
MXP#K```8``(`"0`9#0!Q`%$`$0`1`/H`Z@`1`!$-`'<`5P`7`!<!R`''`!<`
M%PT`90!%``4`!0#"`,4`!0`%#0!R`%(`$@`2`>(!T@`2`!(-`'4`50`5`!4`
MR`#-`!4`%0T`>0!9`!D`&0"E`=L`&0`9#0!T`%0`%``4`>0!U``4`!0"`!L`
M?@H`,0`A`:T`H0X`,@!```````"R`+,`````"@`S`",`HP&Z"@`T`"0`H@"H
M"@`W`"8`MP&K#@`V`%X`'@`>`+8`PP`>`!X*`#4`)0&E`+T#`0!A`0!A`0!A
`
end
Enjoy
Pia
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads