;;; nethack-keys.el --- key bindings for nethack-el ;; Copyright (C) 2002,2003,2005 Ryan Yeske and Shawn Betts ;; Author: Ryan C Yeske ;; Keywords: games ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to ;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;; ;;; Code: (defvar nh-accelerator-chars [?a ?b ?c ?d ?e ?f ?g ?h ?i ?j ?k ?l ?m ?n ?o ?p ?q ?r ?s ?t ?u ?v ?w ?x ?y ?z ?A ?B ?C ?D ?E ?F ?G ?H ?I ?J ?K ?L ?M ?N ?O ?P ?Q ?R ?S ?T ?U ?V ?W ?X ?Y ?Z ?* ?#] "Vector of accelerator characters.") (defvar nh-accelerator-chars-regexp (concat "[" (mapconcat 'char-to-string nh-accelerator-chars nil) "]") "A regexp that matches one of the nh-accelerator-chars") (defvar nh-menu-item-regexp (concat "^\\(" nh-accelerator-chars-regexp "\\) \\([-+]\\|[0-9]+\\) .+$") "A regexp that matches a menu item.") ;; from src/options.c: ;; * Standard letters (for now) are: ;; * ;; * < back 1 page ;; * > forward 1 page ;; * ^ first page ;; * | last page ;; * : search ;; * ;; * page all ;; * , select . ;; * \ deselect - ;; * ~ invert @ (defvar nh-menu-mode-map (let ((map (make-sparse-keymap))) (suppress-keymap map) ;; add all of the accelerator characters (mapc (lambda (char) (define-key map (vector char) 'nh-menu-toggle-item)) nh-accelerator-chars) (define-key map "\C-c\C-c" 'nh-menu-submit) (define-key map "\C-m" 'nh-menu-submit) (define-key map "\C-g" 'nh-menu-cancel) (define-key map "\e\e\e" 'nh-menu-cancel) (define-key map " " 'scroll-up) (define-key map "\C-?" 'scroll-down) (define-key map "\t" 'nh-menu-goto-next) (define-key map "\e\t" 'nh-menu-goto-prev) (define-key map "," 'nh-menu-toggle-all-items) (define-key map "-" 'nh-menu-toggle-all-items) map) "Keymap used in Nethack menus.") ;; cmd.c is where the command-key mappings are done in the nh src (defvar nh-map-mode-map (let ((map (make-sparse-keymap))) (suppress-keymap map) (define-key map "_" 'nethack-command-travel) ;_ (define-key map "^" 'nethack-command-identify-trap) ;^ ;;^[ Cancel command ;; I don't think we need a cancel command (rcy) ;;(define-key map "\e[" 'nethack-command-cancel) ;;^A Redo the previous command (define-key map "\C-a" 'nethack-command-redo-previous) ;;^C Quit the game ;;(define-key map "\C-c\C-c" 'nethack-command-quit) ;;^D Kick something (usually a door, chest, or box) (define-key map "\C-d" 'nethack-command-kick) ;;^P Toggle through previously displayed game messages (define-key map "\C-p" 'nethack-command-previous-message) ;;^R Redraw screen (define-key map "\C-r" 'nethack-command-redraw-screen) ;;^T Teleport around level (define-key map "\C-t" 'nethack-command-teleport-around-level) ;;^Z Suspend game (only if defined) (NOTE: this is useless in emacs i think) (define-key map "\M-z" 'nethack-command-suspend-game) ;;a Apply (use) a tool (define-key map "a" 'nethack-command-apply) ;;A Remove all armor (define-key map "A" 'nethack-command-remove-all-armor) ;;b Go southwest 1 space (define-key map "b" 'nethack-command-southwest) ;;B Go southwest until you are on top of something (define-key map "B" 'nethack-command-southwest-until-ontop) ;;^B Go southwest until you are near something (define-key map "\M-\C-b" 'nethack-command-southwest-until-near) ;;c Close a door (define-key map "c" 'nethack-command-close-door) ;;C Call (name) a particular monster (define-key map "C" 'nethack-command-call-monster) ;;d Drop an item (define-key map "d" 'nethack-command-drop) ;;D Drop specific item types (define-key map "D" 'nethack-command-drop-specific-item) ;;e Eat something (define-key map "e" 'nethack-command-eat) ;;E Engrave writing on the floor (define-key map "E" 'nethack-command-engrave) ;;f Fire ammunition from quiver (define-key map "f" 'nethack-command-fire) ;;F Followed by direction, fight a monster (even if you don't sense it) (define-key map "F" 'nethack-command-force-fight) ;;g Followed by direction, move until you are near something (define-key map "g" 'nethack-command-move-until-near) ;;G Followed by direction, same as control-direction (define-key map "G" 'nethack-command-move) ;;h Go west 1 space (define-key map "h" 'nethack-command-west) ;;H Go west until you are on top of something (define-key map "H" 'nethack-command-west-until-ontop) ;;^H Go west until you are near something (NOTE: what to do with this key?) (define-key map "\M-\C-h" 'nethack-command-west-until-near) ;;i Show your inventory (define-key map "i" 'nethack-command-inventory) ;;I Inventory specific item types (define-key map "I" 'nethack-command-type-inventory) ;;j Go south 1 space (or if number_pad is on, jump to another location) (define-key map "j" 'nethack-command-south) ;;J Go south until you are on top of something (define-key map "J" 'nethack-command-south-until-ontop) ;;^J Go south until you are near something (define-key map "\M-\C-j" 'nethack-command-south-until-near) ;;k Go north 1 space (or if number_pad is on, kick something) (define-key map "k" 'nethack-command-north) ;;K Go north until you are on top of something (define-key map "K" 'nethack-command-north-until-ontop) ;;^K Go north until you are near something (define-key map "\M-\C-k" 'nethack-command-north-until-near) ;;l Go east 1 space (or if number_pad is on, loot a box on the floor) (define-key map "l" 'nethack-command-east) ;;L Go east until you are on top of something (define-key map "L" 'nethack-command-east-until-ontop) ;;^L Go east until you are near something (define-key map "\M-\C-l" 'nethack-command-east-until-near) ;;m Followed by direction, move without picking anything up or fighting (define-key map "m" 'nethack-command-move-no-pickup-or-fight) ;;M Followed by direction, move a distance without picking anything up (define-key map "M" 'nethack-command-move-distance-no-pickup) ;;n Go southeast 1 space (define-key map "n" 'nethack-command-southeast) ;;N Go southeast until you are on something (if number_pad, name an object) (define-key map "N" 'nethack-command-southeast-until-ontop) ;;^N Go southeast until you are near something (define-key map "\M-\C-n" 'nethack-command-southeast-until-near) ;;o Open a door (define-key map "o" 'nethack-command-open) ;;O Show option settings, possibly change them (define-key map "O" 'nethack-command-settings) ;;p Pay your shopping bill (define-key map "p" 'nethack-command-pay) ;;P Put on an accessory (ring, amulet, etc) (define-key map "P" 'nethack-command-put-on) ;;q Quaff (drink) something (define-key map "q" 'nethack-command-quaff) ;;Q Select ammunition for quiver (define-key map "Q" 'nethack-command-select-ammo-for-quiver) ;;r Read a scroll or spellbook (define-key map "r" 'nethack-command-read) ;;R Remove an accessory (ring, amulet, etc) (define-key map "R" 'nethack-command-remove-accessory) ;;s Search for traps and secret doors (define-key map "s" 'nethack-command-search) ;;S Save the game (define-key map "S" 'nethack-command-save-game) ;;t Throw something (define-key map "t" 'nethack-command-throw) ;;T Take off one piece of armor (define-key map "T" 'nethack-command-remove-single-armor) ;;u Go northeast 1 space (or if number_pad is on, untrap something) (define-key map "u" 'nethack-command-northeast) ;;U Go northeast until you are on top of something (define-key map "U" 'nethack-command-northeast-until-ontop) ;;^U Go northeast until you are near something (define-key map "\M-\C-u" 'nethack-command-northeast-until-near) ;;v Show version (define-key map "v" 'nethack-command-version) ;;V Show long version and game history (define-key map "V" 'nethack-command-version-and-history) ;;w Wield (put in use) a weapon (define-key map "w" 'nethack-command-wield) ;;W Wear a piece of armor (define-key map "W" 'nethack-command-wear-armor) ;;x Swap wielded and secondary weapons (define-key map "x" 'nethack-command-swap-weapons) ;;X Enter explore (discovery) mode (only if defined) (define-key map "X" 'nethack-command-explore-mode) ;;y Go northwest 1 space (define-key map "y" 'nethack-command-northwest) ;;Y Go northwest until you are on top of something (define-key map "Y" 'nethack-command-northwest-until-ontop) ;;^Y Go northwest until you are near something (define-key map "\M-\C-y" 'nethack-command-northwest-until-near) ;;z Zap a wand (define-key map "z" 'nethack-command-zap-wand) ;;Z Zap (cast) a spell (define-key map "Z" 'nethack-command-cast-spell) ;;< Go up a staircase (define-key map "<" 'nethack-command-up) ;;> Go down a staircase (define-key map ">" 'nethack-command-down) ;;/ Show what type of thing a symbol corresponds to (define-key map "/" 'nethack-command-what-is-symbol) ;;? Give a help message (define-key map "?" 'nethack-command-help) ;;& Tell what a command does (define-key map "&" 'nethack-command-command-help) ;;! Do a shell escape (only if defined) (define-key map "!" 'nethack-command-shell) ;;\ Show what object types have been discovered (define-key map "\\" 'nethack-command-show-discoveries) ;;. Rest one move while doing nothing (define-key map "." 'nethack-command-rest-one-move) ;; Rest one move while doing nothing (if rest_on_space option is on) ;;(define-key map " " 'nethack-command-rest-one-move) ;; : Look at what is on the floor (define-key map ":" 'nethack-command-look-here) ;; ; Show what type of thing a map symbol on the level corresponds to (define-key map ";" 'nethack-command-what-is-map-piece) ;;, Pick up things at the current location (define-key map "," 'nethack-command-pick-up) ;;@ Toggle the pickup option on/off (define-key map "@" 'nethack-command-toggle-pickup) ;;) Show the weapon currently wielded (define-key map ")" 'nethack-command-show-wielded-weapon) ;;[ Show the armor currently worn (define-key map "[" 'nethack-command-show-worn-armor) ;;= Show the ring(s) currently worn (define-key map "=" 'nethack-command-show-worn-rings) ;;" Show the amulet currently worn (define-key map "\"" 'nethack-command-show-worn-amulet) ;;( Show the tools currently in use (define-key map "(" 'nethack-command-show-tool-in-use) ;;* Show all equipment in use (combination of the ),[,=,",( commands) (define-key map "*" 'nethack-command-show-all-equipment-in-use) ;;$ Count your gold (define-key map "$" 'nethack-command-count-gold) ;;+ List known spells (define-key map "+" 'nethack-command-list-known-spells) ;;^X Show your attributes (intrinsic ones included in debug or explore mode) (define-key map "\M-\C-x" 'nethack-command-show-attributes) ;;; standard wizard commands ;;^E Search a room (available in debug mode only) (define-key map "\C-e" 'nethack-command-wizard-detect) ;;^F Map the level (available in debug mode only) (define-key map "\C-f" 'nethack-command-wizard-map) ;;^G Create a monster (available in debug mode only) (define-key map "\M-\C-g" 'nethack-command-wizard-genesis) ;;^I Identify all items (available in debug mode only) (define-key map "\C-i" 'nethack-command-wizard-identify) ;;^O Show location of special levels (available in debug mode only) (define-key map "\C-o" 'nethack-command-wizard-where) ;;^V Teleport between levels (available in debug mode only) (define-key map "\C-v" 'nethack-command-wizard-level-teleport) ;;^W Wish (available in debug mode only) (define-key map "\C-w" 'nethack-command-wizard-wish) ;;; extended commands ;;# Perform an extended command ;; (define-key map "#" 'nethack-command-read-extended) ;;M-p Pray to the gods for help (define-key map "\ep" 'nethack-command-pray) ;;M-a Adjust inventory letters (define-key map "\ea" 'nethack-command-adjust) ;;M-c Talk to someone (define-key map "\ec" 'nethack-command-chat) ;;M-C list which challenders you have adhered to (define-key map "\eC" 'nethack-command-conduct) ;;M-d Dip an object into something (define-key map "\ed" 'nethack-command-dip) ;;M-e Advance or check weapons skills (define-key map "\ee" 'nethack-command-enhance) ;;M-f Force a lock (define-key map "\ef" 'nethack-command-force) ;;M-i Invoke an object's special powers (define-key map "\ei" 'nethack-command-invoke) ;;M-j Jump to another location (define-key map "\ej" 'nethack-command-jump) ;;M-l Loot a box on the floor (define-key map "\el" 'nethack-command-loot) ;;M-m Use a monster's special ability (define-key map "\em" 'nethack-command-monster) ;;M-n Name an item or type of object (define-key map "\en" 'nethack-command-name) ;;M-o Offer a sacrifice to the gods (define-key map "\eo" 'nethack-command-offer) ;;M-q Quit (define-key map "\eq" 'nethack-command-quit) ;;M-r Rub a lamp (define-key map "\er" 'nethack-command-rub) ;;M-s Sit down (define-key map "\es" 'nethack-command-sit) ;;M-T Turn undead (define-key map "\eT" 'nethack-command-turn) ;;M-t toggle two-weapon combat (define-key map "\et" 'nethack-command-twoweapon) ;;M-u Untrap something (trap, door, or chest) (define-key map "\eu" 'nethack-command-untrap) ;;M-v Print compile time options for this version of NetHack (define-key map "\ev" 'nethack-command-extended-version) ;;M-w Wipe off your face (define-key map "\ew" 'nethack-command-wipe) ;;; extended wizard commands.... map) "Keymap used on the Nethack map.") (provide 'nethack-keys) ;;; nethack-keys.el ends here