1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# Krita overlay. Carries every binding where Krita's choice differs from
# at least one other reference editor, plus Darkly fallbacks for actions
# where Krita has no opinion but some other editor does. Unanimous
# bindings (those all three reference editors agree on) live in
# defaults.yaml; see the rule in defaults.yaml's header.
name: Krita
description: Krita-style keybindings
hotkeys:
# Edit / clipboard (non-unanimous slice). Krita matches PS on these but
# GIMP differs (Redo: <primary>Y, Paste-In-Place: <primary><alt>V — see
# gimp/app/actions/edit-actions.c), so each value is pinned per-overlay.
redo: $mod+Shift+KeyZ
pasteInPlace: $mod+Shift+KeyV
# Krita has no native Preferences hotkey. Fall through to Darkly's
# macOS-convention pick; users can rebind via the settings UI.
openSettings: $mod+Comma
# Krita's `file_export_file` is explicitly `none` (see
# kritamenu.action). GIMP binds Export As to <primary><shift>E
# (gimp/app/actions/file-actions.c — `file-export-as`); Darkly inherits
# that key here.
exportImage: $mod+Shift+KeyE
# View > Mirror View. Krita binds M (kritamenu.action `mirror_canvas`,
# <shortcut>M</shortcut>). Photoshop and GIMP have no opinion; their
# overlays leave mirrorViewH unbound rather than reuse M (Photoshop's
# M is rectSelectTool).
mirrorViewH: KeyM
# Tools.
brushTool: KeyB
fillTool: KeyF
gradientTool: KeyG
colorPickerTool: KeyP
rectSelectTool: KeyR
ellipseSelectTool: Shift+KeyR
magicWandTool: KeyW
transformTool: KeyT
toggleEraseMode: KeyE
# Krita's selection-tool .action files have empty <shortcut>. Fall
# through to Photoshop's L / Shift+L convention.
lassoSelectTool: KeyL
polygonSelectTool: Shift+KeyL
# Layers.
isolateLayer: KeyI
deleteLayer: Shift+Delete
duplicateLayer: $mod+KeyJ
# Krita's "Add Paint Layer" is bound to Insert (kritamenu.action).
newLayer: Insert
# Krita binds "Quick Group" to Ctrl+G (krita.action).
newGroup: $mod+KeyG
# Krita binds "Merge with Layer Below" to Ctrl+E (krita.action
# `merge_layer`, <shortcut>Ctrl+E</shortcut>). The action handler is
# selection-aware: with ≥2 selected it bakes the selection via
# merge_layers, with 1 it does the classic single-layer merge-down.
mergeDown: $mod+KeyE
# Selection.
clearSelection: $mod+Shift+KeyA
invertSelection: $mod+Shift+KeyI
# Colors. Krita binds Ctrl+I to Invert (`krita_filter_invert`); Invert
# Selection is the Shift variant above. Photoshop agrees (Ctrl+I → Image >
# Adjustments > Invert); GIMP does NOT (Ctrl+I is its Invert Selection), so
# this is per-overlay, not a default.
adjustInvert: $mod+KeyI
mouse_clicks:
# Krita's default "Sample FG color from merged image" — Ctrl+drag on
# Linux/Win, Cmd+drag on macOS (Qt::CTRL auto-maps to Command).
sampleColor: canvas@paint:$mod+drag
# Krita's "Change Primary Setting" — shift+drag scrubs brush size.
brushSizeAdjust: canvas@paint:shift+drag
# Krita uses Alt+click on a layer/mask thumbnail to isolate the node.
isolateLayer:
- layerThumb:alt+click
- maskThumb:alt+click
settings:
tools.colorPickerSampleSource: merged