QuakeServer.Keys (quake_server v0.1.0)

Copy Markdown View Source

FTE's key numbers (keynum_t), key names and modifiers, and the QuakeC key codes the client and menu programs use for them, as FTE's keys.c and pr_clcmd.c number, name and translate them.

QuakeServer.Keys.string_to_keynum("ctrl+w")
#=> {119, 4}
QuakeServer.Keys.keynum_to_string(QuakeServer.Keys.keynum(:uparrow), 0)
#=> "UPARROW"
QuakeServer.Keys.to_qc(QuakeServer.Keys.keynum(:mouse1))
#=> 512

A key number below 128 is the key's ASCII code (letters lower case). A modifier is a bit set of shift (1), alt (2) and ctrl (4); with altbindmap (8) set, the low bits name a bind map instead. string_to_keynum/1 gives :all as the modifier when the name has no modifier prefix (every modifier state); a std_ or std+ prefix means no modifier (0).

Summary

Functions

The key number for QuakeC key code code (FTE's MP_TranslateQCtoFTECodes).

The number of FTE key name (an atom of keynum_t without its K_, lower case).

The name of key number keynum with modifier written before it (Ctrl+, Alt+, Shift+ in that order; a bind map is not written), as FTE's Key_KeynumToString.

One past the highest key number (FTE's K_MAX).

The key number and modifier a key name such as "w", "MOUSE1", "K_ENTER", "ctrl+shift+a" or "std_f1" names, or {-1, modifier} when it names no key (FTE's Key_StringToKeynum).

The QuakeC key code for key number keynum (FTE's MP_TranslateFTEtoQCCodes).

Types

keynum()

@type keynum() :: integer()

modifier()

@type modifier() :: 0..15 | :all

Functions

from_qc(code)

@spec from_qc(integer()) :: keynum()

The key number for QuakeC key code code (FTE's MP_TranslateQCtoFTECodes).

keynum(name)

@spec keynum(atom()) :: keynum()

The number of FTE key name (an atom of keynum_t without its K_, lower case).

keynum_to_string(keynum, modifier)

@spec keynum_to_string(keynum(), integer()) :: String.t()

The name of key number keynum with modifier written before it (Ctrl+, Alt+, Shift+ in that order; a bind map is not written), as FTE's Key_KeynumToString.

max()

@spec max() :: pos_integer()

One past the highest key number (FTE's K_MAX).

string_to_keynum(text)

@spec string_to_keynum(String.t()) :: {keynum(), modifier()}

The key number and modifier a key name such as "w", "MOUSE1", "K_ENTER", "ctrl+shift+a" or "std_f1" names, or {-1, modifier} when it names no key (FTE's Key_StringToKeynum).

to_qc(keynum)

@spec to_qc(keynum()) :: integer()

The QuakeC key code for key number keynum (FTE's MP_TranslateFTEtoQCCodes).