No, I'm not likely to use any libraries I don't write for this one, aside from old standards like assert and malloc and wchar and ncursesw.
The thing about it is, all code-introspection libraries in C are hacks just as ugly as the makefile hacks I'm using. So, aside from not getting to write it myself, what would be the point?
Progress report: A week or so ago, I added an alternate main menu with vi-key movement (the default is numpad movement). You can start the game with vi-keys turned on using a command line argument, or you can switch back and forth between main menus in the game using a keystroke command. And, yes, the "ticker line" shows the new command bindings instantly when the switch is made, and yes the game remembers the user preference and switches to the "right" main menu when it comes back from a submenu.
Then I thought about the generation of monsters and items. I started coding a couple times, and each time I got a few functions written and then went, "no, this isn't the right way to do this." So I stared at it a lot. And played a lot of solitaire and minesweeper waiting for clarity about specific aspects of the design to arrive in my brain. And, today it finally did. So I have a design I'm finally happy with for this aspect of the game, and I'm moving forward with it.
So today I added code to keep track of actor generation tables. The way I'm doing things, an 'actor' can be a monster or an item, so the same code will do monster generation and item generation (just using different tables, natch). So now the game keeps a list of named tables of actors with generation oddments, and there are calls to add a table to the list or add an actor prototype to a table, which can be called from init functions in the content files. There's also a call to generate an actor from a particular table, which will be used by dungeon map generators (also 'content', but of a different kind).
The actors stored in the tables are prototypes. They get copied, and the copies get "scanslated" and put into the dungeon. Scanslation is an action which the prototype can have a custom triggered response on, so you can have arbitrary things happen as a result of scanslation. By default it replaces generated actors that have a "pack" attribute with a definite number of actual monsters, makes monsters up to ten percent bigger or smaller or faster or slower than the norm for their type, picks genders for creatures that have randomized gender, picks weapons for creatures that have randomized weapons, etc, or gives creatures very occasional special abilities or odd intrinsics. But different monster types or items can have their own scanslation functions, so in theory scanslation for different creatures can be different, and sensitive to, eg, dungeon depth or the terrain/generator type. And using the scanslation trigger, creatures will be able to modify the dungeon map itself to suit themselves when they're generated - so shopkeepers, for example, can pick out spots to use and then and build walls and doors, etc, as needed to set up their shops, or boxes full of cash can install secret doors with heavy locks all around and make themselves a 'secret vault.' And this meets, or at least makes possible, basically all of the things I wanted out of monster and item generation.
Once I've debugged the actor generation tables a bit, and implemented the default actor scanslation, I'll be posting another dev snapshot on the project page.