- class moderngl_window.context.base.window.WindowConfig(ctx: Context | None = None, wnd: BaseWindow | None = None, timer: BaseTimer | None = None, **kwargs: Any)[source]
Bases:
objectCreating a
WindowConfiginstance is the simplest interface this library provides to open and window, handle inputs and provide simple shortcut method for loading basic resources. It’s appropriate for projects with basic needs.Example:
import moderngl_window class MyConfig(moderngl_window.WindowConfig): gl_version = (3, 3) window_size = (1920, 1080) aspect_ratio = 16 / 9 title = "My Config" resizable = False samples = 8 def __init__(self, **kwargs): super().__init__(**kwargs) # Do other initialization here def on_render(self, time: float, frametime: float): # Render stuff here with ModernGL def on_resize(self, width: int, height: int): print("Window was resized. buffer size is {} x {}".format(width, height)) def on_mouse_position_event(self, x, y, dx, dy): print("Mouse position:", x, y) def on_mouse_press_event(self, x, y, button): print("Mouse button {} pressed at {}, {}".format(button, x, y)) def on_mouse_release_event(self, x: int, y: int, button: int): print("Mouse button {} released at {}, {}".format(button, x, y)) def on_key_event(self, key, action, modifiers): print(key, action, modifiers)
- classmethod add_arguments(parser: ArgumentParser) None[source]
Add arguments to default argument parser. Add arguments using
add_argument(..).- Parameters:
parser (ArgumentParser) – The default argument parser.
- argv: Namespace | None = None
The parsed command line arguments.
- aspect_ratio = 1.7777777777777777
The enforced aspect ratio of the viewport. When specified back borders will be calculated both vertically and horizontally if needed.
This property can be set to
Noneto disable the fixed viewport system.# Default value aspect_ratio = 16 / 9
- assign_event_callbacks() None[source]
Look for methods in the class instance and assign them to callbacks. This method is call by
__init__.
- clear_color = (0.0, 0.0, 0.0, 0.0)
The color the active framebuffer is cleared with. This attribute is expected to be in the form of
(r, g, b, a)in the range[0.0, 1.0]If the value is None the screen will not be cleared every frame.
# Default value clear_color = (0.0, 0.0, 0.0, 0.0) # Disable screen clearing clear_color = None
- cursor = True
Determines if the mouse cursor should be visible inside the window. If enabled on some platforms
# Default value cursor = True
- fullscreen = False
Open the window in fullscreen mode.
# Default value fullscreen = False
- gl_version = (3, 3)
The minimum required OpenGL version required
# Default value gl_version = (3, 3)
The framerate limit for hidden windows. This is useful for windows that should not render at full speed when hidden. On some platforms the render loop can spike to thousands of frames per second when hidden eating up battery life on laptops.
A value less than 0 will disable the framerate limit. Otherwise the the value is a suggested limit in frames per second.
- classmethod init_mgl_context() Context | None[source]
Can be implemented to control the creation of the moderngl context.
The window calls this method first during context creation. If not context is returned the window will create its own.
- load_binary(path: str, **kwargs: Any) bytes[source]
Load a file in binary mode.
If the path is relative the resource system is used expecting one or more resource directories to be registered first. Absolute paths will attempt to load the file directly.
- Parameters:
path (str) – Path to the file relative to search directories
**kwargs – Additional parameters to DataDescription
- Returns:
The byte data of the file
- Return type:
bytes
- load_compute_shader(path: str, defines: dict[str, Any] | None = None, **kwargs: Any) ComputeShader[source]
Loads a compute shader.
- Parameters:
path (str) – Path to a single glsl file
defines (dict) –
#definevalues to replace in the shader source. Example:{'VALUE1': 10, 'VALUE2': '3.1415'}.
- Returns:
The compute shader
- Return type:
moderngl.ComputeShader
- load_json(path: str, **kwargs: Any) dict[str, Any][source]
Load a json file
If the path is relative the resource system is used expecting one or more resource directories to be registered first. Absolute paths will attempt to load the file directly.
- Parameters:
path (str) – Path to the file relative to search directories
**kwargs – Additional parameters to DataDescription
- Returns:
Contents of the json file
- Return type:
dict
- load_program(path: str | None = None, vertex_shader: str | None = None, geometry_shader: str | None = None, fragment_shader: str | None = None, tess_control_shader: str | None = None, tess_evaluation_shader: str | None = None, defines: dict[str, Any] | None = None, varyings: list[str] | None = None) Program[source]
Loads a shader program.
Note that path should only be used if all shaders are defined in the same glsl file separated by defines.
If the path is relative the resource system is used expecting one or more resource directories to be registered first. Absolute paths will attempt to load the file directly.
- Keyword Arguments:
path (str) – Path to a single glsl file
vertex_shader (str) – Path to vertex shader
geometry_shader (str) – Path to geometry shader
fragment_shader (str) – Path to fragment shader
tess_control_shader (str) – Path to tessellation control shader
tess_evaluation_shader (str) – Path to tessellation eval shader
defines (dict) –
#definevalues to replace in the shader source. Example:{'VALUE1': 10, 'VALUE2': '3.1415'}.varyings (list[str]) – Out attribute names for transform shaders
- Returns:
The program instance
- Return type:
moderngl.Program
- load_scene(path: str, cache: bool = False, attr_names: type[~moderngl_window.geometry.attributes.AttributeNames] = <class 'moderngl_window.geometry.attributes.AttributeNames'>, kind: str | None = None, **kwargs: ~typing.Any) Scene[source]
Loads a scene.
If the path is relative the resource system is used expecting one or more resource directories to be registered first. Absolute paths will attempt to load the file directly.
- Keyword Arguments:
path (str) – Path to the file relative to search directories
cache (str) – Use the loader caching system if present
attr_names (AttributeNames) – Attrib name config
kind (str) – Override loader kind
**kwargs – Additional parameters to SceneDescription
- Returns:
The scene instance
- Return type:
- load_text(path: str, **kwargs: Any) str[source]
Load a text file.
If the path is relative the resource system is used expecting one or more resource directories to be registered first. Absolute paths will attempt to load the file directly.
- Parameters:
path (str) – Path to the file relative to search directories
**kwargs – Additional parameters to DataDescription
- Returns:
Contents of the text file
- Return type:
str
- load_texture_2d(path: str, flip: bool = True, flip_x: bool = False, flip_y: bool = True, mipmap: bool = False, mipmap_levels: tuple[int, int] | None = None, anisotropy: float = 1.0, **kwargs: Any) Texture[source]
Loads a 2D texture.
If the path is relative the resource system is used expecting one or more resource directories to be registered first. Absolute paths will attempt to load the file directly.
- Parameters:
path (str) – Path to the texture relative to search directories
- Keyword Arguments:
flip (boolean) – (Use
`flip_y) Flip the image vertically (top to bottom)flip_x (boolean) – Flip the image horizontally (left to right)
flip_y (boolean) – Flip the image vertically (top to bottom)
mipmap (bool) – Generate mipmaps. Will generate max possible levels unless mipmap_levels is defined.
mipmap_levels (tuple) – (base, max_level) controlling mipmap generation. When defined the mipmap parameter is automatically True
anisotropy (float) – Number of samples for anisotropic filtering
**kwargs – Additional parameters to TextureDescription
- Returns:
Texture instance
- Return type:
moderngl.Texture
- load_texture_array(path: str, layers: int = 0, flip: bool = True, mipmap: bool = False, mipmap_levels: tuple[int, int] | None = None, anisotropy: float = 1.0, **kwargs: Any) TextureArray[source]
Loads a texture array.
If the path is relative the resource system is used expecting one or more resource directories to be registered first. Absolute paths will attempt to load the file directly.
- Parameters:
path (str) – Path to the texture relative to search directories
- Keyword Arguments:
layers (int) – How many layers to split the texture into vertically
flip (boolean) – Flip the image horizontally
mipmap (bool) – Generate mipmaps. Will generate max possible levels unless mipmap_levels is defined.
mipmap_levels (tuple) – (base, max_level) controlling mipmap generation. When defined the mipmap parameter is automatically True
anisotropy (float) – Number of samples for anisotropic filtering
**kwargs – Additional parameters to TextureDescription
- Returns:
The texture instance
- Return type:
moderngl.TextureArray
- load_texture_cube(pos_x: str = '', pos_y: str = '', pos_z: str = '', neg_x: str = '', neg_y: str = '', neg_z: str = '', flip: bool = False, flip_x: bool = False, flip_y: bool = False, mipmap: bool = False, mipmap_levels: tuple[int, int] | None = None, anisotropy: float = 1.0, **kwargs: Any) TextureCube[source]
Loads a texture cube.
If the path is relative the resource system is used expecting one or more resource directories to be registered first. Absolute paths will attempt to load the file directly.
- Keyword Arguments:
pos_x (str) – Path to texture representing positive x face
pos_y (str) – Path to texture representing positive y face
pos_z (str) – Path to texture representing positive z face
neg_x (str) – Path to texture representing negative x face
neg_y (str) – Path to texture representing negative y face
neg_z (str) – Path to texture representing negative z face
flip (boolean) – (Use
flip_y)Flip the image vertically (top to bottom)flip_x (boolean) – Flip the image horizontally (left to right)
flip_y (boolean) – Flip the image vertically (top to bottom)
mipmap (bool) – Generate mipmaps. Will generate max possible levels unless mipmap_levels is defined.
mipmap_levels (tuple) – (base, max_level) controlling mipmap generation. When defined the mipmap parameter is automatically True
anisotropy (float) – Number of samples for anisotropic filtering
**kwargs – Additional parameters to TextureDescription
- Returns:
Texture instance
- Return type:
moderngl.TextureCube
- log_level = 20
Sets the log level for this library using the standard logging module.
# Default value log_level = logging.INFO
- on_files_dropped_event(x: int, y: int, paths: list[str]) None[source]
Called when files dropped onto the window
- Parameters:
x (int) – X location in window where file was dropped
y (int) – Y location in window where file was dropped
paths (list) – List of file paths dropped
- on_iconify(iconified: bool) None[source]
Called when the window is minimized/iconified or restored from this state
- Parameters:
iconified (bool) – If
Truethe window is iconified/minimized. Otherwise restored.
- on_key_event(key: Any, action: Any, modifiers: KeyModifiers) None[source]
Called for every key press and release. Depending on the library used, key events may trigger repeating events during the pressed duration based on the configured key repeat on the users operating system.
- Parameters:
key – The key that was press. Compare with self.wnd.keys.
action – self.wnd.keys.ACTION_PRESS or ACTION_RELEASE
modifiers – Modifier state for shift, ctrl and alt
- on_mouse_drag_event(x: int, y: int, dx: int, dy: int) None[source]
Called when the mouse is moved while a button is pressed.
- Parameters:
x (int) – X position of the mouse cursor
y (int) – Y position of the mouse cursor
dx (int) – X delta position
dy (int) – Y delta position
- on_mouse_position_event(x: int, y: int, dx: int, dy: int) None[source]
Reports the current mouse cursor position in the window
- Parameters:
x (int) – X position of the mouse cursor
y (int) – Y position of the mouse cursor
dx (int) – X delta position
dy (int) – Y delta position
- on_mouse_press_event(x: int, y: int, button: int) None[source]
Called when a mouse button in pressed
- Parameters:
x (int) – X position the press occurred
y (int) – Y position the press occurred
button (int) – 1 = Left button, 2 = right button
- on_mouse_release_event(x: int, y: int, button: int) None[source]
Called when a mouse button in released
- Parameters:
x (int) – X position the release occurred
y (int) – Y position the release occurred
button (int) – 1 = Left button, 2 = right button
- on_mouse_scroll_event(x_offset: float, y_offset: float) None[source]
Called when the mouse wheel is scrolled.
Some input devices also support horizontal scrolling, but vertical scrolling is fairly universal.
- Parameters:
x_offset (int) – X scroll offset
y_offset (int) – Y scroll offset
- on_render(time: float, frame_time: float) None[source]
Renders the assigned effect
- Parameters:
time (float) – Current time in seconds
frame_time (float) – Delta time from last frame in seconds
- on_resize(width: int, height: int) None[source]
Called every time the window is resized in case the we need to do internal adjustments.
- Parameters:
width (int) – width in buffer size (not window size)
height (int) – height in buffer size (not window size)
- on_unicode_char_entered(char: str) None[source]
Called when the user entered a unicode character.
- Parameters:
char (str) – The character entered
- resizable = True
Determines of the window should be resizable
# Default value resizable = True
- resource_dir = None
Absolute path to your resource directory containing textures, scenes, shaders/programs or data files. The
load_methods in this class will look for resources in this path. This attribute can be astror apathlib.Path.# Default value resource_dir = None
- classmethod run() None[source]
Shortcut for running a
WindowConfig.This executes the following code:
import moderngl_window moderngl_window.run_window_config(cls)
- samples = 0
Number of samples to use in multisampling.
# Default value samples = 4
- title = 'Example'
Title of the window
# Default value title = "Example"
- visible = True
Determines if the window should be visible when created
# Default value visible = True
- vsync = True
Enable or disable vsync.
# Default value vsync = True
- window_size = (1280, 720)
Size of the window.
# Default value window_size = (1280, 720)
- class moderngl_window.context.base.window.BaseWindow(title: str = 'ModernGL', gl_version: tuple[int, int] = (3, 3), size: tuple[int, int] = (1280, 720), resizable: bool = True, visible: bool = True, fullscreen: bool = False, vsync: bool = True, aspect_ratio: float | None = None, samples: int = 0, cursor: bool = True, backend: str | None = None, context_creation_func: Callable[[], Context | None] | None = None, **kwargs: Any)[source]
Bases:
objectHelper base class for a generic window implementation
- property aspect_ratio: float
The current aspect ratio of the window. If a fixed aspect ratio was passed to the window initializer this value will always be returned. Otherwise
width / heightwill be returned.This property is read only.
- Type:
float
- property backend: str | None
Name of the context backend.
This is
Noneunless a backend is explicitly specified during context creation. The main use case for this is to enable EGL in headless mode.
- property buffer_height: int
the current window buffer height
- Type:
int
- property buffer_size: tuple[int, int]
tuple with the current window buffer size
- Type:
tuple[int, int]
- property buffer_width: int
the current window buffer width
- Type:
int
- clear(red: float = 0.0, green: float = 0.0, blue: float = 0.0, alpha: float = 0.0, depth: float = 1.0, viewport: tuple[int, int, int, int] | None = None) None[source]
Binds and clears the default framebuffer
- Parameters:
red (float) – color component
green (float) – color component
blue (float) – color component
alpha (float) – alpha component
depth (float) – depth value
viewport (tuple) – The viewport
- property close_func: Callable[[], None]
Get or set the close callable
- Type:
callable
- property config: WindowConfig | None
Get or det the current WindowConfig instance
Assigning a WindowConfig instance will automatically set up the necessary event callback methods:
window.config = window_config_instance
- convert_window_coordinates(x: int, y: int, x_flipped: bool = False, y_flipped: bool = False) tuple[int, int][source]
Convert window coordinates to top-left coordinate space. The default origin is the top left corner of the window.
If you are converting from bottom origin coordinates use x_flipped=True
If you are converting from right origin coordinates use y_flipped=True
- Parameters:
x_flipped (bool)
y_flipped (bool)
- Returns:
tuple (x, y) of converted window coordinates
- property ctx: Context
The ModernGL context for the window
- Type:
moderngl.Context
- property cursor: bool
Should the mouse cursor be visible inside the window?
This property can also be assigned to:
# Disable cursor window.cursor = False
- Type:
bool
- property exit_key: Any
Get or set the exit/close key for the window.
Pressing this key will close the window.
By default the
ESCAPEis set, but this can be overridden or disabled:# Default exit key window.exit_key = window.keys.ESCAPE # Set some other random exit key window.exit_key = window.keys.Q # Disable the exit key window.exit_key = None
- property fbo: Framebuffer
The default framebuffer
- Type:
moderngl.Framebuffer
- property files_dropped_event_func: Callable[[int, int, list[str | Path]], None]
Get or set the files_dropped callable
- Type:
callable
- property fixed_aspect_ratio: float | None
The fixed aspect ratio for the window.
Can be set to
Noneto disable fixed aspect ratio making the aspect ratio adjust to the actual window sizeThis will affects how the viewport is calculated and the reported value from the
aspect_ratioproperty:# Enabled fixed aspect ratio window.fixed_aspect_ratio = 16 / 9 # Disable fixed aspect ratio window.fixed_aspect_ratio = None
- Type:
float
- property frames: int
Number of frames rendered
- Type:
int
- property fullscreen: bool
Window is in fullscreen mode
- Type:
bool
- property fullscreen_key: Any
Get or set the fullscreen toggle key for the window.
Pressing this key will toggle fullscreen for the window.
By default this is set to
F11, but this can be overridden or disabled:# Default fullscreen key window.fullscreen_key = window.keys.F11 # Set some other random fullscreen key window.fullscreen_key = window.keys.F # Disable the fullscreen key window.fullscreen_key = None
- property gl_version: tuple[int, int]
(major, minor) required OpenGL version
- Type:
tuple[int, int]
- property gl_version_code: int
Generates the version code integer for the selected OpenGL version.
gl_version (4, 1) returns 410
- Type:
int
- property headless: bool
Is the window headless?
- Type:
bool
- property height: int
The current window height
- Type:
int
Window is hidden
- Type:
bool
- property iconify_func: Callable[[bool], None]
Get or set ehe iconify/show/hide callable
- Type:
callable
- init_mgl_context() None[source]
Create or assign a ModernGL context. If no context is supplied a context will be created using the window’s
gl_version.- Keyword Arguments:
ctx – An optional custom ModernGL context
- property is_closing: bool
Is the window about to close?
- Type:
bool
- property key_event_func: Callable[[str | int, int, KeyModifiers], None]
Get or set the key_event callable
- Type:
callable
- property modifiers: KeyModifiers
(KeyModifiers) The current keyboard modifiers
- mouse
Mouse button enum
alias of
MouseButtons
- property mouse_drag_event_func: Callable[[int, int, int, int], None]
Get or set the mouse_drag callable
- Type:
callable
- property mouse_exclusivity: bool
If mouse exclusivity is enabled.
When you enable mouse-exclusive mode, the mouse cursor is no longer available. It is not merely hidden – no amount of mouse movement will make it leave your application. This is for example useful when you don’t want the mouse leaving the screen when rotating a 3d scene.
This property can also be set:
window.mouse_exclusivity = True
- Type:
bool
- property mouse_position_event_func: Callable[[int, int, int, int], None]
Get or set the mouse_position callable
- Type:
callable
- property mouse_press_event_func: Callable[[int, int, int], None]
Get or set the mouse_press callable
- Type:
callable
- property mouse_release_event_func: Callable[[int, int, int], None]
Get or set the mouse_release callable
- Type:
callable
- property mouse_scroll_event_func: Callable[[float, float], None]
Get or set the mouse_scroll_event calable
- Type:
callable
- property mouse_states: MouseButtonStates
Mouse button state structure.
The current mouse button states.
window.mouse_buttons.left window.mouse_buttons.right window.mouse_buttons.middle
- Type:
MouseButtonStates
- name = 'base'
Name of the window. For example
pyglet,glfw
- property on_generic_event_func: Callable[[int, int, int, int], None] | None
Get or set the on_generic_event callable used to funnel all non-processed events
- Type:
callable
- property pixel_ratio: float
The framebuffer/window size ratio
- Type:
float
- property position: tuple[int, int]
The current window position.
This property can also be set to move the window:
# Move window to 100, 100 window.position = 100, 100
- Type:
tuple[int, int]
- render(time: float = 0.0, frame_time: float = 0.0) None[source]
Renders a frame by calling the configured render callback
- Keyword Arguments:
time (float) – Current time in seconds
frame_time (float) – Delta time from last frame in seconds
- property render_func: Callable[[float, float], None]
The render callable
This property can also be used to assign a callable.
- Type:
callable
- property resizable: bool
Window is resizable
- Type:
bool
- resize(width: int, height: int) None[source]
Should be called every time window is resized so the example can adapt to the new size if needed
- property resize_func: Callable[[int, int], None]
Get or set the resize callable
- Type:
callable
- property samples: int
Number of Multisample anti-aliasing (MSAA) samples
- Type:
float
- set_default_viewport() None[source]
Calculates the and sets the viewport based on window configuration.
The viewport will based on the configured fixed aspect ratio if set. If no fixed aspect ratio is set the viewport will be scaled to the entire window size regardless of size.
Will add black borders and center the viewport if the window do not match the configured viewport (fixed only)
- set_icon(icon_path: str) None[source]
Sets the window icon to the given path
- Parameters:
icon_path (str) – path to the icon
- property size: tuple[int, int]
current window size.
This property also support assignment:
# Resize the window to 1000 x 1000 window.size = 1000, 1000
- Type:
tuple[int, int]
- property title: str
Window title.
This property can also be set:
window.title = "New Title"
- Type:
str
- property unicode_char_entered_func: Callable[[str], None]
Get or set the unicode_char_entered callable
- Type:
callable
- property viewport: tuple[int, int, int, int]
current window viewport
- Type:
tuple[int, int, int, int]
- property viewport_height: int
The height of the viewport
Equivalent to
self.viewport[3].- Type:
int
- property viewport_size: tuple[int, int]
Size of the viewport.
Equivalent to
self.viewport[2], self.viewport[3]- Type:
tuple[int,int]
- property viewport_width: int
The width of the viewport.
Equivalent to
self.viewport[2].- Type:
int
- property visible: bool
Window is visible
- Type:
bool
- property vsync: bool
vertical sync enabled/disabled
- Type:
bool
- property width: int
The current window width
- Type:
int
- class moderngl_window.context.base.BaseKeys[source]
Namespace for mapping key constants. This is simply a template for what keys should be mapped for all window libraries
- A: Any = 'undefined'
- ACTION_PRESS: Any = 'ACTION_PRESS'
- ACTION_RELEASE: Any = 'ACTION_RELEASE'
- B: Any = 'undefined'
- BACKSLASH: Any = 'undefined'
- BACKSPACE: Any = 'undefined'
- C: Any = 'undefined'
- CAPS_LOCK: Any = 'undefined'
- COMMA: Any = 'undefined'
- D: Any = 'undefined'
- DELETE: Any = 'undefined'
- DOWN: Any = 'undefined'
- E: Any = 'undefined'
- END: Any = 'undefined'
- ENTER: Any = 'undefined'
- EQUAL: Any = 'undefined'
- ESCAPE: Any = 'undefined'
- F: Any = 'undefined'
- F1: Any = 'undefined'
- F10: Any = 'undefined'
- F11: Any = 'undefined'
- F12: Any = 'undefined'
- F2: Any = 'undefined'
- F3: Any = 'undefined'
- F4: Any = 'undefined'
- F5: Any = 'undefined'
- F6: Any = 'undefined'
- F7: Any = 'undefined'
- F8: Any = 'undefined'
- F9: Any = 'undefined'
- G: Any = 'undefined'
- H: Any = 'undefined'
- HOME: Any = 'undefined'
- I: Any = 'undefined'
- INSERT: Any = 'undefined'
- J: Any = 'undefined'
- K: Any = 'undefined'
- L: Any = 'undefined'
- LEFT: Any = 'undefined'
- LEFT_BRACKET: Any = 'undefined'
- LEFT_CTRL: Any = 'undefined'
- LEFT_SHIFT: Any = 'undefined'
- M: Any = 'undefined'
- MINUS: Any = 'undefined'
- N: Any = 'undefined'
- NUMBER_0: Any = 'undefined'
- NUMBER_1: Any = 'undefined'
- NUMBER_2: Any = 'undefined'
- NUMBER_3: Any = 'undefined'
- NUMBER_4: Any = 'undefined'
- NUMBER_5: Any = 'undefined'
- NUMBER_6: Any = 'undefined'
- NUMBER_7: Any = 'undefined'
- NUMBER_8: Any = 'undefined'
- NUMBER_9: Any = 'undefined'
- NUMPAD_0: Any = 'undefined'
- NUMPAD_1: Any = 'undefined'
- NUMPAD_2: Any = 'undefined'
- NUMPAD_3: Any = 'undefined'
- NUMPAD_4: Any = 'undefined'
- NUMPAD_5: Any = 'undefined'
- NUMPAD_6: Any = 'undefined'
- NUMPAD_7: Any = 'undefined'
- NUMPAD_8: Any = 'undefined'
- NUMPAD_9: Any = 'undefined'
- O: Any = 'undefined'
- P: Any = 'undefined'
- PAGE_DOWN: Any = 'undefined'
- PAGE_UP: Any = 'undefined'
- PERIOD: Any = 'undefined'
- Q: Any = 'undefined'
- R: Any = 'undefined'
- RIGHT: Any = 'undefined'
- RIGHT_BRACKET: Any = 'undefined'
- RIGHT_SHIFT: Any = 'undefined'
- S: Any = 'undefined'
- SEMICOLON: Any = 'undefined'
- SLASH: Any = 'undefined'
- SPACE: Any = 'undefined'
- T: Any = 'undefined'
- TAB: Any = 'undefined'
- U: Any = 'undefined'
- UP: Any = 'undefined'
- V: Any = 'undefined'
- W: Any = 'undefined'
- X: Any = 'undefined'
- Y: Any = 'undefined'
- Z: Any = 'undefined'