//unfortunately, have to wrap the docs in a C comment for doxygen // vim:tw=74:formatoptions-=l /** \page key_binding New Bind System \verbatim To: Colin Thompson Subject: Re: toggle console problem From: Bill Currie Date: Sat, 19 Jan 2002 01:15:16 -0700 On Fri, Jan 18, 2002 at 07:33:38AM -0000, Colin Thompson wrote: > Hi all, > > I noticed a problem with binding a key to toggle the console. the > 'traditional' key is usually tilde but it only brings the console down - > after that the keypress is is captured by the console code and won't send it > back up again.... This is actually by design. > I'm not sure if this is classed as a bug or not, but I noticed that Taniwha > is working with the console code so I thought this list would be more > appropriate... Yeah, I've been busy of late (finally got back into the swing of things:). > Should the console be capturing only certain keys? or everything? Well, the console /is/ capturing the keys. They're just not bound to any action. qf 0.5 has a rather powerful key binding system (thanks to Mercury) that can drasticly simplify config scripts. Rather than the one key binding table you're used to, qf has eighteen: one for the console (IMT_CONSOLE) and 17 for in-game (IMT_0 to IMT_16). There is also IMT_DEFAULT, but that just maps to IMT_0. The way to bind keys in this system is (eg): in_bind imt_console k_backquote toggleconsole (there, even answered your main question:). IMT -> input mapping table. Here's another, longer example: -----8<----- exec configs/common/alias/zoom.cfg bind mwheeldown z_out bind mwheelup z_in init__zoom.cfg in_bind imt_1 m_wheel_down "impulse 12" in_bind imt_1 m_wheel_up "impulse 10" in_bind imt_0 k_capslock +goto_imt_1 // unbound keys in imt_[1-16] fall through to imt_0 alias +goto_imt_1 "imt imt_1" alias -goto_imt_1 "imt imt_0" -----8<----- Now, bind acts as a compatability layer taking the old bind syntax (and key names), converting them to the new using the imt specified in the in_bind_imt cvar (which defaults to imt_default (which points to imt_0: the main game imt)). The imt command selects the current imt that the input engine is to check for a binding. What this setup does is give me variable zoom using my mouse wheel by default. When I hold down the capslock key, the wheel cycles though my weapons. As stated in the comment in the config, if the input engine doesn't find a binding for a key in tables 1-16, it will look in table 0. If it still doesn't find a binding, it drops the key. imt_console is /totally/ independent of imt 0-16. /any/ time you leave the game, imt_console is made the `default' and imt_0 to imt_16 are ignored. In game, imt_0 is default with imt_1 to imt_16 being available. Ways to leave the game: bring down the console (or have it forced down via disconnect); go to the menu (they're not functional yet, but I'm making progress); messagemode1 and messagemode2. HTH Bill PS: incase nobodie's noticed: chat now has input history. just use the up/down arrow keys. -- Leave others their otherness. -- Aratak \endverbatim */