Important Keybindings¶
Efficient animation with The Violence Tool relies on a combination of tool-specific shortcuts and standard Blender navigation.
Some operators are not available from the panel. Operators OP8 (Jiggle), OP36–OP40, and several utility operators (OP1–OP7, OP9–OP24) do not appear in the Layer Selector panel or the Layer Switcher menu. To use these, you have to bind them to a keymap in Edit → Preferences → Keymap → 3D View → 3D Viewport, or search for them with F3.
Dan’s Tip
Since the tool requires a lot of unique keybinds and such, it can be helpful to have a seperate installation of Blender 4.1.1 just for these animation projects. Blender is easly installed in parallel so your 4.1.1 Fred build won’t interfere with your other potential Blender projects or experiments. Handy if you have the space!
Essential Blender Shortcuts¶
Fred recommends mastering these native Blender shortcuts for a smooth workflow. Knowing the underlying Operator ID helps you find and customize these bindings in Edit > Preferences > Keymap.
Shortcut |
Action |
Context |
Blender Operator ID |
Keymap Section Path |
|---|---|---|---|---|
|
Open Mode Menu (Draw/Edit/Sculpt) |
Any Mode |
|
Window |
|
Toggle Viewport Shading |
3D Viewport |
|
3D View → 3D Viewport |
|
Toggle Camera View |
3D Viewport |
|
3D View → 3D Viewport |
|
Zoom In/Out |
3D Viewport |
|
3D View → 3D Viewport |
|
Toggle Edit Mode |
Grease Pencil Object |
|
Window |
|
Cycle Selection Modes (Vertex/Line) |
Edit Mode |
|
Grease Pencil → Stroke Edit Mode |
|
Select Vertex / Line / Intersection |
Edit Mode |
|
Grease Pencil → Stroke Edit Mode |
|
Change Stroke Thickness |
Edit Mode |
|
Grease Pencil → Stroke Edit Mode |
|
Make Stroke Uniform (Circular) |
Edit Mode |
|
Grease Pencil → Stroke Edit Mode |
|
Search Operators |
Any Mode |
|
Window |
|
Insert Keyframe |
Timeline / Dope Sheet |
|
Timeline / Dope Sheet |
|
Play/Pause Animation |
Timeline / Dope Sheet |
|
Timeline / Dope Sheet |
How to Find These in Preferences¶
Go to Edit > Preferences > Keymap.
Type the Operator ID into the search bar.
You will see the current keybinding if one exists
If nothing comes up, this is because a keybind has not been set yet. You’ll need to click the +Add New button at the bottom of each section.
How to Bind Operators to Keys¶
The Keymap Section Path column tells you exactly where to navigate in Edit > Preferences > Keymap to add a new binding.
Step-by-Step:
Go to Edit > Preferences > Keymap.
On the left tree, expand the section listed in the Keymap Section Path column. * Example: For
3D View → 3D View (Global), expand 3D View, then 3D View (Global).Scroll to the bottom of that section.
Click the “+ Add New” button.
In the new row: * Left field (Operator): Type the Operator ID (e.g.,
fred.op8). * Right field (Event): Click and press your desired key (e.g.,Alt-R).For Hold-to-Activate keys (marked with “(Hold)” and “(Release)”): * Add two bindings for the same key. * First binding: Set Event Type to ``Press``. * Second binding: Set Event Type to ``Release``.
Click Save Preferences at the bottom.
Fred’s Tip
Erasing: Avoid the Eraser tool in Draw Mode. Instead, press Tab to enter Edit Mode, select the unwanted points, and press X to delete them. This offers greater precision.
Tool-Specific Shortcuts¶
Warning
The tool needs to be fully installed as an addon, not just ‘run’ from the console. Make sure you’ve gone to Edit > Preferences > Addons and imported it.
Quick Actions¶
Shortcut |
Action |
Context |
Operator ID |
Keymap Section Path |
|---|---|---|---|---|
|
Join and smooth two selected strokes |
Edit Mode |
|
Grease Pencil → Stroke Edit Mode |
|
Jiggle: Add texture to entire layer |
3D Viewport |
|
3D View → 3D View (Global) |
|
Large Pass: Aggressive distortion |
3D Viewport |
|
3D View → 3D View (Global) |
Randomize only selected vertices |
3D Viewport |
|
3D View → 3D View (Global) |
|
|
Smooth the selected stroke |
Edit Mode |
|
Grease Pencil → Stroke Edit Mode |
|
Toggle Fade Inactive Layers |
? |
|
Window |
|
Toggle Onion Skins |
? |
|
Window |
It should be noted that fred.op12 functions slightly differentlly than fred.op8 Jiggle beyond ‘small’ and ‘large’.
Since (fred.applynoise) is adjustable, you can do ‘small’ jitters with it, but it affects everything on the layer.
OP12 specifically ranomizes the selected vertices, but has locked properties.
Dan’s Tip
There’s another plugin for Blender called “Is Key Free” that’s useful for checking that you’re not overwriting an important keybind.
Timeline Operators¶
Shortcut |
Action |
Context |
Operator ID |
Keymap Section Path |
|---|---|---|---|---|
|
Prev Keyframe (Undo-supported) |
3D Viewport |
|
3D View → 3D View (Global) |
|
Next Keyframe (Undo-supported) |
3D Viewport |
|
3D View → 3D View (Global) |
|
Prev Marker (Undo-supported) |
3D Viewport |
|
3D View → 3D View (Global) |
|
Next Marker (Undo-supported) |
3D Viewport |
|
3D View → 3D View (Global) |
Brush & Tool Swapping¶
Shortcut |
Action |
Context |
Operator ID |
Keymap Section Path |
|---|---|---|---|---|
|
Switch to Eraser Point brush. |
Paint Mode |
|
Grease Pencil → Stroke Paint Mode |
|
Switch to Eraser Stroke brush. |
Paint Mode |
|
Grease Pencil → Stroke Paint Mode |
|
Switch to 01 PEN brush (Custom). |
Paint Mode |
|
Grease Pencil → Stroke Paint Mode |
|
Switch to 01 PEN STRENGTH P brush (Custom). |
Paint Mode |
|
Grease Pencil → Stroke Paint Mode |
|
Enable Draw Behind. |
Paint Mode |
|
Grease Pencil → Stroke Paint Mode |
|
Disable Draw Behind. |
Paint Mode |
|
Grease Pencil → Stroke Paint Mode |
|
Enable Automerge: Merges new strokes with existing ones. |
Paint Mode |
|
Grease Pencil → Stroke Paint Mode |
|
Disable Automerge: Stops merging strokes. |
Paint Mode |
|
Grease Pencil → Stroke Paint Mode |
Visibility & Layer Management¶
Shortcut |
Action |
Context |
Operator ID |
Keymap Section Path |
|---|---|---|---|---|
|
Lock Non-Character layers. |
3D Viewport |
|
3D View → 3D View (Global) |
|
Unlock Mouth + Head layers. |
3D Viewport |
|
3D View → 3D View (Global) |
|
Reveal All GP materials. |
3D Viewport |
|
3D View → 3D View (Global) |
|
Toggle Layer visibility. |
3D Viewport |
|
3D View → 3D View (Global) |
Advanced & Utility¶
Shortcut |
Action |
Context |
Operator ID |
Keymap Section Path |
|---|---|---|---|---|
|
Create Fox Rig (full setup). |
3D Viewport |
|
3D View → 3D View (Global) |
|
Disable Lights on selected GP object. |
3D Viewport |
|
3D View → 3D View (Global) |
|
Toggle Compositor (Disabled ↔ Always). |
3D Viewport |
|
3D View → 3D View (Global) |
|
Stroke 0% (invisible strokes). |
Paint Mode |
|
Grease Pencil → Stroke Paint Mode |
|
Stroke 100% (full opacity). |
Paint Mode |
|
Grease Pencil → Stroke Paint Mode |
|
Fill Mode: Control (precise filling). |
Paint Mode |
|
Grease Pencil → Stroke Paint Mode |
|
Fill Mode: Both (strokes + control). |
Paint Mode |
|
Grease Pencil → Stroke Paint Mode |
Setting Up “Hold-to-Activate” Keys¶
Some tools (like Automerge or Draw Behind) are designed to work only while you hold a key down. To set this up in Blender:
Open Keymap Preferences Go to Edit > Preferences > Keymap.
Locate the Operator In the search bar at the top, type the operator name (e.g.,
fred.op16). * Tip: If you don’t see it, ensure the addon is enabled and you are searching in the correct category (usually 3D Viewport or Window).Add a New Binding Click the + (plus) icon next to the operator name to add a new keybinding.
Configure the “Press” Event * Key: Click the key field and press the key you want to use (e.g.,
A). * Event Type: Change this fromAnyto ``Press``. * This ensures the action starts when you push the key down.Add the “Release” Binding * Click the + icon again to add a second binding for the same operator. * Key: Press the same key (e.g.,
A). * Event Type: Change this to ``Release``. * This ensures the action stops when you let go of the key.Verify Context * Ensure the Context column matches your workflow (e.g., 3D Viewport or Grease Pencil Stroke Paint Mode).
Fred’s Tip
If you forget a shortcut, hit F3 and type the function name. It shows you the shortcut and lets you search for it.
Workflow Tips¶
When switching tasks, always check these three settings:¶
Layer (Is the correct layer active?)
Tool (Is it Draw, Fill, or Sculpt?)
Material (Is the correct material selected?)
Optimizing File Size¶
If your file becomes too large due to too many vertices:
Select all strokes (or use Multi-Frame Editing).
Press F3 and search for “Adaptive”.
Set the threshold (e.g.,
0.001) to simplify strokes.
Material Efficiency¶
Remember that changing a material in a slot updates every frame using that slot. To change a color globally, edit the material in the slot rather than refilling frames.
Choosing the Right Keymap Context¶
When binding any operators to keys, the Keymap Context determines when the shortcut is active. If you’re in the wrong context, the key won’t respond.
- 3D Viewport: Works in the 3D Viewport. This signifies operators
that switch modes internally (like Jiggle) or work across modes (like navigation).
- Paint Mode: Specific to drawing and brush-specific
tools (Eraser swap, Stroke Strength).
- Edit Mode: Only active while in Edit Mode. Use for tools that
require selected strokes (Join & Smooth, Micro-Jitter).
Binding Jiggle (
fred.op8) to Paint Mode instead of 3D Viewport. Since Jiggle switches to Edit Mode internally, a Paint Mode binding may not fire reliably ? TEST THIS
Additional Operators (Keybind or F3 Only)¶
The following operators have no panel button or menu entry. They can be
accessed by pressing F3 and typing the operator name, or by binding
them to a key in Preferences → Keymap → 3D View → 3D Viewport.
Shortcut |
Action |
Context |
Operator ID |
Keymap Section Path |
|---|---|---|---|---|
|
Create Fox Rig: Creates a full GP rig with layers, materials, and brushes. Recommended starting point. |
3D Viewport |
|
3D View → 3D View (Global) |
|
Lock Non-Character: Locks everything except the core character layers. Useful before applying noise. |
3D Viewport |
|
3D View → 3D View (Global) |
|
Unlock Mouth + Head: Unlocks mouth, mask, teeth, AND head layers. For animating jaw movements. |
3D Viewport |
|
3D View → 3D View (Global) |
|
Reveal All: Makes all hidden GP materials visible. |
3D Viewport |
|
3D View → 3D View (Global) |
|
Disable Lights: Turns off scene lighting on the selected GP object. Flat-shaded rendering. |
3D Viewport |
|
3D View → 3D View (Global) |
|
Toggle Compositor: Switches viewport compositor between Disabled and Always. |
3D Viewport |
|
3D View → 3D View (Global) |
|
Toggle Layer: Hides/shows the currently active GP layer. |
3D Viewport |
|
3D View → 3D View (Global) |
|
Stroke 0%: Makes drawn strokes invisible. |
Paint Mode |
|
Grease Pencil → Stroke Paint Mode |
|
Stroke 100%: Makes drawn strokes fully opaque. |
Paint Mode |
|
Grease Pencil → Stroke Paint Mode |
|
Draw On Back On: New strokes draw behind existing. |
Paint Mode |
|
Grease Pencil → Stroke Paint Mode |
|
Draw On Back Off: New strokes draw on top. |
Paint Mode |
|
Grease Pencil → Stroke Paint Mode |
|
Fill Mode: Control: Fill brush affects control points only (precise filling). |
Paint Mode |
|
Grease Pencil → Stroke Paint Mode |
|
Fill Mode: Both: Fill brush affects strokes and control points. |
Paint Mode |
|
Grease Pencil → Stroke Paint Mode |
|
Flattens Y, smooths, and snaps to nearest face. If drawing becomes misaligned, I think this fixes it |
3D Viewport |
|
3D View → 3D View (Global) |
TEST OP36 - This refers to a mesh, is this to align strokes? If so I think it needs gpencil.stroke_smooth or GPENCIL_MODIFIER_FLATTEN rather than bpy.ops.mesh.vertices_smooth, but I’m guessing.
Excluded Operators¶
The following operators exist in the code but require understanding the context:
fred.op11Superseded byfred.op25(Create GP Fox). Right now, it creates a blank GP named ART_FOX with one layer and one material. Don’t use it.
fred.op14Selects the jaw layers only - but sometimes you need the head layers to move as well;fred.op15includes head layers.
fred.op26May not work correctly (this looks like an object not a name string). I think bpy.ops.gpencil.material_set(mat) should be bpy.ops.gpencil.material_set(slot=slot.name) TEST THIS
fred.op30Broken syntax (hide_viewportis a property, not callable). I think it should be: bpy.ops.object.hide_view_set(state=True) TEST THIS
fred.op38Placeholder? currently loops through all GP objects but doesn’t seem to perform an action?
fred.op39This _might_ crash if used twice in a row. I think it doesn’t unregister due to some nesting. It might not need registering in the first place because of its type? TEST THIS