SoInteractionMappingYAML¶
- MacroModule¶
author
package
definition
see also
keywords
Purpose¶
The SoInteractionMappingYAML allows to configure/override managed interactions via a YAML configuration.
Internally, it makes use of the SoInteractionMapping standard module, but it avoids the cryptic syntax
of that module.
The following actions can be configured:
PointingActions
actions that can be bound to mouse buttons
OffsetActions
actions that can be bound to mouse/wheel and key presses
CommandActions
commands that can be triggered by key presses
PointingActions¶
Pointing actions can be mapped to the mouse buttons.
The full syntax for configuring a PointingAction is:
moduleName.actionName:
type: PointingAction
enabled: [true|false] # default: true
trigger: [shift+][ctrl+][alt+][button1][button2][button3]
ignore: [shift][ctrl][alt][button1][button2][button3][all][buttons][modifiers] # default: empty
triggers:
- trigger: [shift+][ctrl+][alt+][button1][button2][button3]
ignore: [shift][ctrl][alt][button1][button2][button3][all][buttons][modifiers]
...
keepDefaults: [true|false] # default: false
Separators for trigger are “+”,”-” and space. Separators for ignore are “,” and space. There can either be a single trigger and ignore, or there can be a list of triggers, where each trigger as a trigger and ignore config. Mouse buttons are:
button1: left button
button2: middle button
button3: right button
The buttons also have the aliases:
button1: left_button
button2: middle_button
button3: right_button
Use the aliases if you prefer them.
The following shows a simple example:
slicer.SoView2DSliceAction:
type: PointingAction
trigger: button3
ignore: all
# same but more verbose:
# ignore: shift,ctrl,alt,button1,button2
It maps the slicer.SoView2DSliceAction to button3 and ignores all modifier keys and all buttons. Note that “all” in ignore is a shortcut which automatically ignores all modifiers/buttons that are not used in the trigger. You can also specify them manually in the ignore. You can also use modifiers to ignore all unused modifier keys or buttons to ignore all other buttons.
If it should NOT ignore the modifier keys and other button states, it would look like this:
slicer.SoView2DSliceAction:
type: PointingAction
trigger: button3
Note that the default triggers are removed by default, so the action will only be available on button3. If you want to keep the default trigger bindings, you can write:
slicer.SoView2DSliceAction:
type: PointingAction
trigger: button3
keepDefaults: true
The following shows an example where multiple triggers are configured:
slicer.SoView2DSliceAction:
type: PointingAction
triggers:
- trigger: button1
ignore: shift,ctrl,alt
- trigger: button2
ignore: shift,ctrl,alt
- trigger: button3
ignore: shift,ctrl,alt
OffsetActions¶
Offset actions can be mapped to the mouse buttons, mouse wheel and keys.
The full syntax for configuring a OffsetAction is:
moduleName.actionName:
type: OffsetActions
enabled: [true|false] # default: true
trigger: [shift+][ctrl+][alt+][button1][button2][button3][wheel][KEYNAME1/KEYNAME2]
ignore: [shift][ctrl][alt][button1][button2][button3][all][buttons][modifiers] # default: empty
swap: [true|false] # default: false
sensitivity: FLOAT # default: 1.0
sensitivityY: FLOAT # default: 1.0
triggers:
- trigger: [shift+][ctrl+][alt+][button1][button2][button3][wheel][KEYNAME1/KEYNAME2]
ignore: [shift][ctrl][alt][button1][button2][button3][all][buttons][modifiers]
swap: [true|false] # default: false
sensitivity: FLOAT # default: 1.0
sensitivityY: FLOAT # default: 1.0
...
keepDefaults: [true|false] # default: false
Separators for trigger are “+”,”-” and space. Separators for ignore are “,” and space. There can either be a single trigger and ignore, or there can be a list of triggers, where each trigger as a trigger and ignore config.
The trigger can be:
the mouse buttons
button1,button2,button3
the mouse wheel
wheel
two keys
KEYNAME1/KEYNAME2, e.g. LEFT/RIGHT or A/B, see keynames in CommandAction section.
The following shows a simple example, it maps the slicer.SoView2DSliceOffsetAction to the mouse wheel and requires all modifier keys to be released:
slicer.SoView2DSliceOffsetAction:
type: OffsetAction
trigger: wheel
This maps the offset action to the LEFT and RIGHT cursor keys:
slicer.SoView2DSliceOffsetAction:
type: OffsetAction
trigger: LEFT/RIGHT
And the following shows a more advanced config with sensitivity and axes swap:
slicer.SoView2DSliceOffsetAction:
type: OffsetAction
trigger: button1
swap: true
sensitivity: 4.5
sensitivityY: 6.5
As with PointingActions, you can also have multiple triggers:
slicer.SoView2DSliceOffsetAction:
type: OffsetAction
triggers:
- trigger: button1
swap: true
sensitivity: 4.5
sensitivityY: 6.5
- trigger: wheel
- trigger: LEFT/RIGHT
CommandActions¶
Command actions can be mapped to keys.
The full syntax for configuring a CommandActions is:
moduleName.actionName:
type: CommandActions
enabled: [true|false] # default: true
key: [shift+][ctrl+][alt+][KEYNAME]
keys:
- [shift+][ctrl+][alt+][KEYNAME]
- ...
keepDefaults: [true|false] # default: false
There can be either a single key or a list of keys that trigger the command. By default, the default key bindings are removed, but you can keep them by setting keepDefaults to true.
Key names (KEYNAME)¶
Key names can be used in Command and Offset actions. They can be prefixed by any of the “Ctrl+”,”Alt+”,”Shift+” modifiers.
The following names are available:
A-Z (normal A-Z letter keys)
NUMBER_0
NUMBER_1
NUMBER_2
NUMBER_3
NUMBER_4
NUMBER_5
NUMBER_6
NUMBER_7
NUMBER_8
NUMBER_9
HOME
LEFT_ARROW
UP_ARROW
RIGHT_ARROW
DOWN_ARROW
PAGE_UP
PAGE_DOWN
PRIOR
NEXT
END
PAD_ENTER
PAD_F1
PAD_F2
PAD_F3
PAD_F4
PAD_0
PAD_1
PAD_2
PAD_3
PAD_4
PAD_5
PAD_6
PAD_7
PAD_8
PAD_9
PAD_ADD
PAD_SUBTRACT
PAD_MULTIPLY
PAD_DIVIDE
PAD_SPACE
PAD_TAB
PAD_INSERT
PAD_DELETE
PAD_PERIOD
F1
F2
F3
F4
F5
F6
F7
F8
F9
F10
F11
F12
BACKSPACE
TAB
RETURN
ENTER
PAUSE
SCROLL_LOCK
ESCAPE
KEY_DELETE
PRINT
INSERT
RIGHT_SUPER
NUM_LOCK
CAPS_LOCK
SHIFT_LOCK
LEFT_SUPER
SPACE
EXCLAM
QUOTEDBL
NUMBERSIGN
DOLLAR
PERCENT
AMPERSAND
APOSTROPHE
PARENLEFT
PARENRIGHT
ASTERISK
PLUS
COMMA
MINUS
PERIOD
SLASH
COLON
SEMICOLON
LESS
EQUAL
GREATER
QUESTION
AT
BRACKETLEFT
BACKSLASH
BRACKETRIGHT
ASCIICIRCUM
UNDERSCORE
GRAVE
BRACELEFT
BAR
BRACERIGHT
ASCIITILDE
Output Fields¶
outScene¶
- name: outScene, type: SoNode¶
Parameter Fields¶
Visible Fields¶
Mapping (YAML)¶
- name: mapping, type: String¶
Ignore Other Pointing Actions¶
- name: ignoreOtherPointingActions, type: Bool, default: FALSE¶
Ignore Other Offset Actions¶
- name: ignoreOtherOffsetActions, type: Bool, default: FALSE¶
Ignore Other Command Actions¶
- name: ignoreOtherCommandActions, type: Bool, default: FALSE¶