@lay:listing 2 <\#150><\#150> 0138l2

@fig:Listing 2. ibmkey.el

@cx:; ibmkey.el<\n>
; Copyright 1996 John F. Bunch<\n>
<\n>
; Clear the key<\#150>translation<\#150>map (normally defined by loaddefs.el).<\n>
(setq key<\#150>translation<\#150>map (make<\#150>sparse<\#150>keymap))<\n>
; Switch Backspace and Delete.<\n>
(define<\#150>key key<\#150>translation<\#150>map <\#34><\\>177<\#34> <\#34><\\>^H<\#34>)<\n>
(define<\#150>key key<\#150>translation<\#150>map <\#34><\\>^H<\#34> <\#34><\\>177<\#34>)<\n>
; Definitions of Backspace and Delete keys as strings.<\n>
(defvar Backspace <\#34><\\>177<\#34>)<\n>
(defvar Delete <\#34><\\>^H<\#34>)<\n>
<\n>
; Help & Undo.<\n>
(global<\#150>set<\#150>key [f1] 'help<\#150>command)<\n>
(global<\#150>set<\#150>key [f1 f1] 'help<\#150>for<\#150>help)<\n>
(global<\#150>set<\#150>key [f4] 'advertised<\#150>undo)<\n>
<\n>
; Backspace.<\n>
(global<\#150>set<\#150>key Backspace 'backward<\#150>delete<\#150>char<\#150>untabify)<\n>
<\n>
; Editing keypad.<\n>
(global<\#150>set<\#150>key [insert] 'overwrite<\#150>mode)<\n>
(global<\#150>set<\#150>key Delete 'delete<\#150>char)<\n>
(global<\#150>set<\#150>key [home] 'beginning<\#150>of<\#150>line)<\n>
(global<\#150>set<\#150>key [end] 'end<\#150>of<\#150>line)<\n>
<\n>
; Pan (use Alt<\#150>arrows).<\n>
; Scrolls the display without moving the cursor.<\n>
(defun pan<\#150>up () (interactive)<\n>
    (scroll<\#150>up 1)<\n>
)<\n>
(defun pan<\#150>down () (interactive)<\n>
    (scroll<\#150>down 1)<\n>
)<\n>
(defun pan<\#150>right () (interactive)<\n>
    (scroll<\#150>right 1)<\n>
)<\n>
(defun pan<\#150>left () (interactive)<\n>
    (scroll<\#150>left 1)<\n>
)<\n>
(global<\#150>set<\#150>key [M<\#150>up] 'pan<\#150>up)<\n>
(global<\#150>set<\#150>key [M<\#150>down] 'pan<\#150>down)<\n>
(global<\#150>set<\#150>key [M<\#150>left] 'pan<\#150>left)<\n>
(global<\#150>set<\#150>key [M<\#150>right] 'pan<\#150>right)<\n>
<\n>
; Numeric keypad.<\n>
; Define kp<\#150>f1 (Num Lock) as a prefix key.<\n>
(global<\#150>set<\#150>key [kp<\#150>f1] (make<\#150>keymap))<\n>
; Universal argument.<\n>
(global<\#150>set<\#150>key [kp<\#150>f1 kp<\#150>f1] 'universal<\#150>argument)<\n>
; Search<\n>
(global<\#150>set<\#150>key [kp<\#150>divide] 'search<\#150>backward)<\n>
(global<\#150>set<\#150>key [kp<\#150>multiply] 'search<\#150>forward)<\n>
; Cut & Paste<\n>
(global<\#150>set<\#150>key [kp<\#150>decimal] 'set<\#150>mark<\#150>command)<\n>
(global<\#150>set<\#150>key [kp<\#150>subtract] 'kill<\#150>region)    ;Cut<\n>
(global<\#150>set<\#150>key [kp<\#150>f1 kp<\#150>subtract] 'yank)     ;Paste<\n>
(global<\#150>set<\#150>key [kp<\#150>add] 'kill<\#150>ring<\#150>save)      ;Copy<\n>
(global<\#150>set<\#150>key [kp<\#150>5] 'kill<\#150>line)  ;Cut to end of line.<\n>
(global<\#150>set<\#150>key [kp<\#150>f1 kp<\#150>5] 'yank) ;Paste.<\n>
; Movement<\n>
(global<\#150>set<\#150>key [kp<\#150>7] 'beginning<\#150>of<\#150>line)<\n>
(global<\#150>set<\#150>key [kp<\#150>8] 'backward<\#150>paragraph)<\n>
(global<\#150>set<\#150>key [kp<\#150>9] 'scroll<\#150>down)<\n>
(global<\#150>set<\#150>key [kp<\#150>f1 kp<\#150>9] 'beginning<\#150>of<\#150>buffer)<\n>
(global<\#150>set<\#150>key [kp<\#150>4] 'backward<\#150>word)<\n>
(global<\#150>set<\#150>key [kp<\#150>f1 kp<\#150>4] 'backward<\#150>sentence)<\n>
(global<\#150>set<\#150>key [kp<\#150>6] 'forward<\#150>word)<\n>
(global<\#150>set<\#150>key [kp<\#150>f1 kp<\#150>6] 'forward<\#150>sentence)<\n>
(global<\#150>set<\#150>key [kp<\#150>1] 'end<\#150>of<\#150>line)<\n>
(global<\#150>set<\#150>key [kp<\#150>2] 'forward<\#150>paragraph)<\n>
(global<\#150>set<\#150>key [kp<\#150>3] 'scroll<\#150>up)<\n>
(global<\#150>set<\#150>key [kp<\#150>f1 kp<\#150>3] 'end<\#150>of<\#150>buffer)<\n>
(global<\#150>set<\#150>key [kp<\#150>enter] 'other<\#150>window)<\n>
; Toggle insert mode.<\n>
(global<\#150>set<\#150>key [kp<\#150>0] 'overwrite<\#150>mode)<\n>
<\n>


