]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - ncurses/base/define_key.c
ncurses 5.0
[ncurses.git] / ncurses / base / define_key.c
similarity index 91%
rename from ncurses/define_key.c
rename to ncurses/base/define_key.c
index 20dd3e7346435e5dfa081e19e9194a1598180c3b..52dc6927bd5500b403beebfee5a28426d50d44e6 100644 (file)
@@ -32,7 +32,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: define_key.c,v 1.2 1998/02/11 12:13:54 tom Exp $")
+MODULE_ID("$Id: define_key.c,v 1.4 1999/02/21 13:03:55 tom Exp $")
 
 int
 define_key(char *str, int keycode)
@@ -41,14 +41,19 @@ define_key(char *str, int keycode)
 
        T((T_CALLED("define_key(%s,%d)"), _nc_visbuf(str), keycode));
        if (keycode > 0) {
-               if (has_key(keycode)) {
-                       if (_nc_remove_key(&(SP->_keytry), keycode))
+               if (str != 0) {
+                       define_key(str, 0);
+               } else if (has_key(keycode)) {
+                       while (_nc_remove_key(&(SP->_keytry), keycode))
                                code = OK;
                }
                if (str != 0) {
                        (void) _nc_add_to_try(&(SP->_keytry), str, keycode);
                        code = OK;
                }
+       } else {
+               while (_nc_remove_string(&(SP->_keytry), str))
+                       code = OK;
        }
        returnCode(code);
 }