DL and Keyboards

I think I realized the balance in my life. It really isn't a writer, as much as I want it to be, and it isn't a programmer. Right now, it's both. And while that makes it harder to excel at both. Mainly because I, through this blog for example, doesn't show someone obsessed with the writing craft. Likewise, this blog doesn't show a pure programmer. But, you know what? I'm both and there really isn't much I can do about that. I love to write, it makes me whole. I love to put words on paper, to see the word counts slowly rise up as I find myself creating these fascinating characters that make me want to write about them.

So, I've been doing this short story, call it DL for the abbreviations since it is under the other byline. Obviously, I'm telling everyone where I'm posting it. It won't be a proper published novel, mainly because it is "published" on a free website. Though, I think with that byline, I may just self-publish these self-contained. Yeah, they'll only make $5-10 dollars in their life, but I'd be happy with that. :)

As for programming, I spent last night working on a generic input library. Now, for those who actually are curious, I'm writing a library that consistently lets you say "someone pressed down the 'A' key" and do stuff with it. Very, very basic stuff.

The main question comes down to, why? This is reinventing the wheel, flat out. There is no question that I am redoing what endless other libraries have done and yet I'm moving forward. It came down to one thing.


I have my Sprite3 library. It has a GUI layer on it, so I need to know what characters are being pressed. I also help maintain, well am the only user, of BooGame. BooGame is an abstraction layer on top of Tao.Sdl and Tao.FreeGlut. FreeGlut, SDL, and System.Windows.Forms all have their input methodologies, each of which is separate than the others. Each one deals with character input in a different way. When I first touched BooGame, it was just a FreeGlut backend, so it used FreeGlut characters. When I added the abstracted backend, so I could have SDL or FreeGlut, I had to write a generic keyboard input. Which then I wrapped around my own generic input methods.

Well, that's a lot of abstraction layers.

At some point this week, I realized as pretty much the sole user of BooGame, why don't I just write something that agrees with the entire library chain and reduces the complexity of the system? Plus, add the features I really want in a game, like chained keyboard commands.

Chained keystrokes are an expansion on the "control-s", I'll refer to it as "C-s" based on Emacs. Visual Studio 2005 uses this, as does Emacs, but you can have a series of commands to result in something. For example, "C-x C-c" (control-x, control-c) to save a file. Yeah, it's a bit strange, but it lets you have more complicated commands. Not that I plan on writing a game that requires "C-x C-s S-x" because I hate people, but it will let me do things like have commands that require you to press two keys ("C-s" or "z-x" or even "RMB-LMB" for both buttons).

It's a small library, but it will really make my life easier as I focus on CuteGod. And, at the moment, that is what I need.