IFKeyNav - keyboard navigation for Windows Frotz and others

Hey Guys.

I’ve just created a simple program to allow me to navigate the game world in Windows Frotz using keyboard combinations, and I thought I’d share :slight_smile:

The default key combinations are:

Ctrl+Up - North
Ctrl+Right - East
Ctrl+Down - South
Ctrl+Left - West
Ctrl+PgUp - Northeast
Ctrl+PgDn - Southeast
Ctrl+End - Southwest
Ctrl+Home - Northwest
Ctrl+Insert - Up
Ctrl+Delete - Down
Ctrl+Esc - Exit IFKeyNav

The source code (AutoIt) is included in the archive, so you can modify and re-compile it in order to change the key combinations and the target interpreter.


IFKeyNav.zip (419 KB)

If for some reason you can’t download from the attachment above, use this link:
docs.google.com/uc?authuser=0&i … t=download

Have fun and let me know if you use it.

Cute! I don’t see myself using it, I’m too comfortable with the usual navigational methods by now, but I like the idea.

Thanks Peter, for me it’s very intuitive because I have Trizbort open next to Windows Frotz with automapping on, so it’s very intuitive for me to look at the map and just ctrl+press the direction I want to go to without having to think about the compass directions, for some reason (English as a second language might be one) I usually have to think for a second whether left\right is east or west, and so the diagonal directions all have the same issue with me as they all contain a west\east component, for whatever reason I don’t have the same issue with north and south, go figure :slight_smile:

Heh. GUEMap had a feature that maybe Trizbort could benefit from. Does anyone remember? You picked a starting room and a finishing room, and you got a series of commands (“n.e.e.s.se” style) that you could paste into your game to move to that room quicker.

A bit off topic, except that it’s still in the general subject of making it easier to navigate. :slight_smile:

I always had a LOT of trouble on the E/W thing as well, and English is not my second language either! In Portugal, we have a funny trick to remember that: to the right of Portugal as seen on a map, i.e. to the east, we have Spain (Espanha - capital E) and to the left of Portugal (west) we have the Atlantic Ocean (Oceano Atlântico - O for “Oeste”, or “West”). I still use that trick a lot.

Another thing I use to remember is a stupid visual/sound pattern. In the game “The Muppet’s Treasure Island” there was an extremely simple “puzzle” that revolved around cardinal directions. I still hear the voice: “North, south, east and west; prepare the gold to find the rest”, or something (my English wasn’t as good back then - I was a kid!). And I remember the visual pattern that indicates - up, down, right and left.

When you consider all of this, it gets hard sometimes to explain to people exactly why cardinal directions are a good idea. :slight_smile:

(when it comes to nautical navigation, though, forget it. If the game allows cardinal and nautical, I go full cardinal. If I’m stuck using aft/fore/port/starboard, I’m perpetually lost)

Another project of mine, MapGrue (www.mapgrue.co.nr), has that kind of functionality where you can click on room names to have it generate a list of directions and inject them into the interpreter.

Hehe, those are great :slight_smile:

Have you considered speaking with Michael Roberts about integrating MapGRUE into IFDB somehow?


It can already be integrated into IFDB, the same way Joey Jones integrated Zorkmid (yet another project of mine :slight_smile: ) in the IFDB page for his game Mammal: ifdb.tads.org/viewgame?id=3pfco8kg9xs3ahil

Yeah, but IFDB could itself have a button that does all of that heavy lifting.

Ok, hardly heavy, but still.

Hey, it took me forever to find this, but it’s a great idea! It could even help with release-testing, so I don’t have to bug my testers.

Looking at the source will be useful too. I’ve used AutoIt for another project I should share, so I wanted to search for it to make sure there was no overlap. I got this topic as a nice bonus.

I think that modifying the interpreter would generally be a better idea though, rather than using AutoIt. Depending on the interpreter it may use a front-end and back-end (one example of such is JSZM), so just modifying the front-end will help with this.

Also, some games may use ship directions in some places, or perhaps something else. (TAVERN defines status-line types 10 to 13 for these purposes (and I intend to also add specification for menus, including a direction menu). Z-machine XZIP supports a “direction menu”, although the specification is unknown. Although, Z-machine XZIP and YZIP also support terminating character table which can be use for using number pad as directions.)

I encourage that we work to get a new API call for compass directions built in future Glk API so it’s a standard thing for multiple interpreters. As almost all Interactive Fiction interpreters have a concept of compass direction and room movement that I’ve seen. I know it would be nice to be able to use swipes on mobile phones / tablets with touch.

Why not just send it as a normal command? (Treat a swipe upward as if it were keypresses “N[enter]”, a swipe right as “E[enter]”, and so on?)

You could make command macros to send strings as input, but a standard API with a standard set of integer numbers can do a few other things: The game engine can tell the user interface which directions are valid on room exits with standard codes, the API can let the user interface know when they are valid (maybe it is at a YES/NO prompt and can’t accept them), and you deal with non-English language localization based on the standard codes, etc. My point is that Glk is specifically made for Interactive Fiction - and compass directions are pretty standard (and go back to the 1970’s original game, Colossal Cave Adventure). I would propose it would be an optional set of API functions like Glk defines optional features for sound and graphics on client apps.