How to Create Key Combination Binds in Quake Live
- Creating a modifier inside Quake Live
- Adding more keys to the second layer
- Why WinKey works well as a modifier
- Using WinKey with AutoHotkey
- Limitations and cfg placement
Quake Live has a flexible binding system, but it cannot directly bind combinations of two keys. Regular binds are simple:
Code:
bind q "weapon 2"
bind e "weapon 5"
bind mouse4 "say_team ^7ENEMY LOW"
Code:
bind CAPSLOCK+Q "say_team ^7LEFT"
bind WIN+1 "say_team ^7QUAD"
bind WIN+MWHEELUP "say_team ^7HIGH"
The workaround is to turn one existing key into a modifier. While it is held, selected controls execute an alternative set of commands; release it and their normal actions return. In practice, this gives part of the keyboard and mouse a second bind layer:
Code:
Q -> normal action
Modifier + Q -> alternative action
1 -> normal action
Modifier + 1 -> alternative action
WheelUp -> normal action
Modifier + WheelUp -> alternative action
Creating a modifier inside Quake Live
The basic setup does not require any external software. You only need a key that Quake Live recognizes and that is free in your config. For example:
Code:
CAPSLOCK
HOME
INS
PGUP
PGDN
PAUSE
MOUSE4
MOUSE5
Suppose the mouse wheel normally sends two positional team calls:
Code:
MWHEELUP -> HIGH
MWHEELDOWN -> LOW
Code:
CAPSLOCK + MWHEELUP -> LEFT
CAPSLOCK + MWHEELDOWN -> RIGHT
Code:
alias mod_wheelup_normal "say_team ^7HIGH"
alias mod_wheelup_alt "say_team ^7LEFT"
alias mod_wheeldown_normal "say_team ^7LOW"
alias mod_wheeldown_alt "say_team ^7RIGHT"
Code:
set mod_wheelup "mod_wheelup_normal"
set mod_wheeldown "mod_wheeldown_normal"
Code:
bind MWHEELUP "vstr mod_wheelup"
bind MWHEELDOWN "vstr mod_wheeldown"
Code:
alias +modifier "set mod_wheelup mod_wheelup_alt; set mod_wheeldown mod_wheeldown_alt"
alias -modifier "set mod_wheelup mod_wheelup_normal; set mod_wheeldown mod_wheeldown_normal"
bind CAPSLOCK "+modifier"
The result is:
|
Normal Code:
WheelUp -> HIGH
WheelDown -> LOW
|
CapsLock held Code:
WheelUp -> LEFT
WheelDown -> RIGHT
|
Custom aliases can use the same behavior. With:
Code:
bind CAPSLOCK "+modifier"
Code:
CapsLock pressed -> +modifier
CapsLock released -> -modifier
Adding more keys to the second layer
The same modifier can control many keys at once. Each key stays bound to its own `vstr` variable, while `+modifier` and `-modifier` decide which version that variable points to.
For example, Q could normally select a weapon:
Code:
alias mod_q_normal "weapon 5"
Code:
alias mod_q_alt "say_team ^7RUSH ROCKET"
Code:
alias mod_q_normal "weapon 5"
alias mod_q_alt "say_team ^7RUSH ROCKET"
set mod_q "mod_q_normal"
bind q "vstr mod_q"
Code:
alias +modifier "set mod_wheelup mod_wheelup_alt; set mod_wheeldown mod_wheeldown_alt; set mod_q mod_q_alt"
alias -modifier "set mod_wheelup mod_wheelup_normal; set mod_wheeldown mod_wheeldown_normal; set mod_q mod_q_normal"
Now the same physical key has two functions:
Code:
Q -> weapon 5
CapsLock + Q -> RUSH ROCKET
|
Normal layer Code:
1 -> weapon
2 -> weapon
3 -> weapon
Q -> weapon
E -> weapon
R -> weapon
WheelUp -> normal action
WheelDown -> normal action
|
Modifier layer Code:
Mod + 1 -> QUAD
Mod + 2 -> BATTLE SUIT
Mod + 3 -> SAFE
Mod + Q -> LEFT
Mod + E -> RIGHT
Mod + R -> HELP
Mod + WheelUp -> ENEMY HIGH
Mod + WheelDown -> ENEMY LOW
|
For any ordinary one-shot bind, the reusable template is:
Code:
alias mod_KEY_normal "NORMAL COMMAND"
alias mod_KEY_alt "ALTERNATIVE COMMAND"
set mod_KEY "mod_KEY_normal"
bind KEY "vstr mod_KEY"
Code:
set mod_KEY mod_KEY_alt
Code:
set mod_KEY mod_KEY_normal
Once the first few keys are configured, expanding the layer is mostly a matter of repeating this pattern.
Why WinKey works well as a modifier
CapsLock is convenient because Quake Live can bind it directly, but WinKey is arguably a better physical modifier on many keyboards.
The left Windows key usually sits between Ctrl and Alt. It can be held with the left thumb while the other fingers stay around the normal movement and weapon area. That makes combinations such as these relatively comfortable:
Code:
Win + 1
Win + 2
Win + 3
Win + Q
Win + E
Win + R
Win + WheelUp
Win + WheelDown
There is also no real opportunity cost for many players. Making CapsLock your modifier means CapsLock can no longer be used as a normal Quake bind. The same applies to Mouse4 or Mouse5. WinKey, on the other hand, is usually doing nothing useful inside the game, so it can provide an additional layer without taking away a valuable gameplay key.
The problem is that WinKey is not an ordinary Quake key – it is also handled by Windows. Pressing it may open the Start menu, and simply disabling the Windows-key behavior does not necessarily make it a reliable bindable modifier inside Quake Live.
You may also see configs containing something like:
Code:
bind 0x00 "+modifier"
Using WinKey with AutoHotkey
A cleaner approach is to let AutoHotkey v2 translate the physical WinKey into an ordinary unused key that Quake Live already understands.
Before doing this, make sure Quake Live itself is not disabling the Windows key. Your cfg must contain:
Code:
winkey_disable 0
AutoHotkey can then translate WinKey into any unused key recognized by Quake Live. For example:
Code:
Left Win -> HOME -> Quake Live
Code:
bind HOME "+modifier"
Create a file such as:
Code:
quake_winkey.ahk
Code:
#Requires AutoHotkey v2.0
#SingleInstance Force
#HotIf WinActive("ahk_exe quakelive_steam.exe")
*LWin::SendEvent "{Home down}"
*LWin Up::SendEvent "{Home up}"
#HotIf
Code:
Left Win pressed -> HOME pressed
Left Win released -> HOME released
Code:
WinKey down
-> AutoHotkey sends HOME down
-> Quake executes +modifier
-> alternative bind layer active
WinKey up
-> AutoHotkey sends HOME up
-> Quake executes -modifier
-> normal bind layer restored
Code:
INS
PGUP
PGDN
PAUSE
Code:
*LWin::SendEvent "{Pause down}"
*LWin Up::SendEvent "{Pause up}"
Code:
bind PAUSE "+modifier"
Why not put every WinKey combination into AutoHotkey?
You could define separate AutoHotkey actions for:
Code:
Win + Q
Win + E
Win + 1
Win + 2
Win + WheelUp
Win + WheelDown
Keeping AutoHotkey limited to one translation makes the setup easier to edit, troubleshoot and share:
| AutoHotkey | WinKey -> one unused Quake Live key |
| Quake Live cfg | Normal binds, alternative binds, +modifier and -modifier |
If you use CapsLock, Home, Pause or another normal Quake key as the physical modifier, AutoHotkey is not needed at all.
Limitations and cfg placement
The simple `vstr` method is best suited to one-shot commands – actions that execute when the key is pressed and do not remain active until release.
Typical examples include:
Code:
weapon
say
say_team
dropweapon
droppowerup
Code:
+forward
+back
+moveleft
+moveright
+attack
+zoom
+speed
For weapons, messages, drops and similar one-shot actions, the simple system above is sufficient. Movement, attack and other held actions should not be moved into the same template without accounting for their release behavior.
❗ There is one more common cfg issue to check. If your config contains:
Code:
unaliasall
A typical order is:
Code:
// settings
// regular binds
unaliasall
// normal and alternative aliases
// modifier variables
// +modifier
// -modifier
bind CAPSLOCK "+modifier"
Code:
// settings
// regular binds
winkey_disable 0
unaliasall
// normal and alternative aliases
// modifier variables
// +modifier
// -modifier
bind HOME "+modifier"