KeyToggle

MacroModule

author

Volker Dicken

package

FMEwork/ReleaseMeVis

definition

KeyToggle.def

see also

SoToggle, SoKeyGrabber

keywords

inventor, trigger, switch, show, hide, grab, event, handle, remote

Purpose

The KeyToggle macro is a one-module solution for interactive key bindings to toggle things like overlays. It is just a tiny convenience macro that combines a SoToggle with a SoKeyGrabber.

Usage

The default use case is to: * Instantiate a new KeyToggle module * Drop it on top of an inventor connection, letting the connection split up and go through the first input (child) * Configure the key in the panel (for instance, “O”) * Rename the model (e.g., to “Toggle_O_verlay”) to document the key and its mnemonic

Nowadays, the network panel’s description reveals the shortcut, but the above suggestion also gives the mnemonic that helps remembering the shortcut without looking at the network, and it also gives more meaningful names to modules instead of KeyToggle2, KeyToggle4 and so on.

Interaction

Possibly the most important use case is when assessing segmentation results (contours or masks), where it is extremely important to be able to disable overlays in order to see the underlying image data. Here, toggling works much better than a side-by-side view of the image and the segmentation, because they’re in the same place. (And toggling by key is again much better than toggling using the mouse, because one does not have to move the eyes in order to follow the pointer, and multiple fingers / keys can toggle different things very efficiently.)

Tips

Sometimes, the above method of toggling a subgraph of the inventor scene does not work. However, the KeyToggle macro can still be very convenient for toggling options like the rendering of WEM edges: Instead of using toggling child scenes, just connect On or off to boolean fields of other modules.

Windows

Default Panel

../../../Modules/Macros/KeyToggle/mhelp/Images/Screenshots/KeyToggle._default.png

Input Fields

child

name: child, type: SoNode

Only used when On is true

direct

name: direct, type: SoNode

Always used when Enable is true

Output Fields

self

name: self, type: SoNode

Parameter Fields

Field Index

<alt>: Bool

On: Bool

<ctrl>: Bool

Shift Pressed: Bool

<shift>: Bool

Switch on: Enum

Alt Pressed: Bool

Ctrl Pressed: Bool

Enable: Bool

Key Pressed: Trigger

off: Bool

Visible Fields

Enable

name: enable, type: Bool, default: TRUE

Completely enables / disables the module, disconnecting both inputs and the keygrabber from the output scene

On

name: on, type: Bool, default: FALSE

Toggled via the selected key (Switch on)

Switch on

name: listenKey, type: Enum, default: KEY_DELETE

Values:

Title

Name

​Any

​ANY

​Left Shift

​LEFT_SHIFT

​Right Shift

​RIGHT_SHIFT

​Left Control

​LEFT_CONTROL

​Right Control

​RIGHT_CONTROL

​Left Alt

​LEFT_ALT

​Right Alt

​RIGHT_ALT

​Number 0

​NUMBER_0

​Number 1

​NUMBER_1

​Number 2

​NUMBER_2

​Number 3

​NUMBER_3

​Number 4

​NUMBER_4

​Number 5

​NUMBER_5

​Number 6

​NUMBER_6

​Number 7

​NUMBER_7

​Number 8

​NUMBER_8

​Number 9

​NUMBER_9

​A

​A

​B

​B

​C

​C

​D

​D

​E

​E

​F

​F

​G

​G

​H

​H

​I

​I

​J

​J

​K

​K

​L

​L

​M

​M

​N

​N

​O

​O

​P

​P

​Q

​Q

​R

​R

​S

​S

​T

​T

​U

​U

​V

​V

​W

​W

​X

​X

​Y

​Y

​Z

​Z

​Home

​HOME

​Left Arrow

​LEFT_ARROW

​Up Arrow

​UP_ARROW

​Right Arrow

​RIGHT_ARROW

​Down Arrow

​DOWN_ARROW

​Page Up

​PAGE_UP

​Page Down

​PAGE_DOWN

​Prior

​PRIOR

​Next

​NEXT

​End

​END

​Pad Enter

​PAD_ENTER

​Pad F1

​PAD_F1

​Pad F2

​PAD_F2

​Pad F3

​PAD_F3

​Pad F4

​PAD_F4

​Pad 0

​PAD_0

​Pad 1

​PAD_1

​Pad 2

​PAD_2

​Pad 3

​PAD_3

​Pad 4

​PAD_4

​Pad 5

​PAD_5

​Pad 6

​PAD_6

​Pad 7

​PAD_7

​Pad 8

​PAD_8

​Pad 9

​PAD_9

​Pad Add

​PAD_ADD

​Pad Subtract

​PAD_SUBTRACT

​Pad Multiply

​PAD_MULTIPLY

​Pad Divide

​PAD_DIVIDE

​Pad Space

​PAD_SPACE

​Pad Tab

​PAD_TAB

​Pad Insert

​PAD_INSERT

​Pad Delete

​PAD_DELETE

​Pad Period

​PAD_PERIOD

​F1

​F1

​F2

​F2

​F3

​F3

​F4

​F4

​F5

​F5

​F6

​F6

​F7

​F7

​F8

​F8

​F9

​F9

​F10

​F10

​F11

​F11

​F12

​F12

​Backspace

​BACKSPACE

​Tab

​TAB

​Return

​RETURN

​Enter

​ENTER

​Pause

​PAUSE

​Scroll Lock

​SCROLL_LOCK

​Escape

​ESCAPE

​Key Delete

​KEY_DELETE

​Print

​PRINT

​Insert

​INSERT

​Right Super

​RIGHT_SUPER

​Num Lock

​NUM_LOCK

​Caps Lock

​CAPS_LOCK

​Shift Lock

​SHIFT_LOCK

​Left Super

​LEFT_SUPER

​Space

​SPACE

​Exclam

​EXCLAM

​Quotedbl

​QUOTEDBL

​Numbersign

​NUMBERSIGN

​Dollar

​DOLLAR

​Percent

​PERCENT

​Ampersand

​AMPERSAND

​Apostrophe

​APOSTROPHE

​Parenleft

​PARENLEFT

​Parenright

​PARENRIGHT

​Asterisk

​ASTERISK

​Plus

​PLUS

​Comma

​COMMA

​Minus

​MINUS

​Period

​PERIOD

​Slash

​SLASH

​Colon

​COLON

​Semicolon

​SEMICOLON

​Less

​LESS

​Equal

​EQUAL

​Greater

​GREATER

​Question

​QUESTION

​At

​AT

​Bracketleft

​BRACKETLEFT

​Backslash

​BACKSLASH

​Bracketright

​BRACKETRIGHT

​Asciicircum

​ASCIICIRCUM

​Underscore

​UNDERSCORE

​Grave

​GRAVE

​Braceleft

​BRACELEFT

​Bar

​BAR

​Braceright

​BRACERIGHT

​Asciitilde

​ASCIITILDE

<shift>

name: needShift, type: Bool, default: FALSE

<ctrl>

name: needCtrl, type: Bool, default: FALSE

<alt>

name: needAlt, type: Bool, default: FALSE

Key Pressed

name: keyPressed, type: Trigger, persistent: no

Shift Pressed

name: shiftPressed, type: Bool, persistent: no

Ctrl Pressed

name: ctrlPressed, type: Bool, persistent: no

Alt Pressed

name: altPressed, type: Bool, persistent: no

Hidden Fields

off

name: off, type: Bool, persistent: no

Opposite of On, in case several things should be toggled to opposite boolean values