¶VirtualDub's accelerator keys
VirtualDub has a number of keyboard shortcuts bound to its menu commands. Two of these are F5 (Preview) and F7 (Save as AVI).
Where did these shortcuts come from? No, I don't play darts.
They're the shortcuts for Run (F5) and Build (F7) in Microsoft Visual C++ 6.0. I got so used to those shortcuts during VirtualDub's early development that I naturally used them for my app as well. To the utter confusion of normal users, of course.
The keyboard shortcuts are a bit of a mess at this point, partly due to having some confusion in the naming of the menu commands. In retrospect, I should have named the Save As functions Export or Render, since they don't necessarily save to the same name or format as what was opened; however, I had exactly zero NLE experience when I started writing the program and it never occurred to me. VirtualDub is slowly moving toward document model as I add more features to the edit mode, though, so I may eventually have to make that change. Ultimately, I'd like to implement user customization of accelerators, but there are several work items that have to be done to reach that, the most important being dynamic menus; currently they're sourced from a static resource, so they can't change to match any customized accelerators.
I freely admit that I also made the n00b mistake of choosing some accelerators that are difficult or impossible to hit on some internationalized keyboards, but I never claimed VirtualDub was internationalized.
Another issue is that right now there are simply too many configuration items in the menu, too many to cover with accelerators. Configuring a render generally requires a zillion trips to the menus, and at some point I want to push some of those or at least make the main path work through a single or a few paged dialogs. You can see a preview of what it might look like in the Preferences dialog in recent versions, with a listbox of categories on the left and the pages on the right. I figure that I could arrange pages to be roughly of the same scope and in the same order as the pipeline stages, so you would enable and configure stages in the order of their application. What I wouldn't do, though, is add tabs, because I hate tabbed configuration dialogs, partly because they don't scale and scrolling or multi-level tabs are horrible, and partly because they're a pain in the butt to code (as in the status dialog).