-
-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathnotes.txt
95 lines (91 loc) · 5.65 KB
/
notes.txt
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
+ Exit gracefully when exception thrown (e.g. infinite switch mode loop)
+ IndicatorManager should listen for mouse position and give it to WindowsIndicator
+ Update hint windows when screens changed?
+ Hint undo key could be a combo instead of a key
+ Rename Mouse, Wheel, etc. to Mouse/Wheel/...Configuration
+ mode.blinking-mouse.enabled/visible-duration/invisible-duration
++ Zoom mode? Useful for 2-stage hint?
+ Configuration for indicator offset
+ Improve error handling in config parser
+ Wrap all parseBoolean/... into try catch that log the error with the property key and value
+ Check if the preparation is still a prefix of at least one combo.
+ If it is not, then it means a key is being pressed for longer than what the combo expects,
+ and the key can be regurgitated (just like it is regurgitated upon key release).
+ (Regurgitate only +key, not #key.)
- Regurgitate every x ms a key press until is release by user/remapper or another key is pressed.
- Not just regurgitate, but sendinputs from remapping too
+ Mimics Windows repeat delay and repeat rate. No because apparently they are hardware-dependent.
+ Hint box border is broken for position history hints
+ It is possible to re-implement a zoom without using the Windows Magnifier:
+ https://stackoverflow.com/questions/63111438/implement-lens-magnification-to-magnify-the-windows-taskbar
(it requires UIAccess)
+ move-to-last-selected-hint command?
- _{leftctrl} should be allowed release: _{leftctrl} +a -leftctrl +b
- _{leftctrl} should only mean that leftctrl has to be pressed beforehand
- Similarly ^{leftctrl}: ^{leftctrl} +a +leftctrl +b
- Hint box border: share (split 50/50) border only if there is another hint box next to it
+ Zoom
+ zoom-in=+leftshift, zoom-out commands
+ zoom.center=screen-center, mouse, last-selected-hint
+ zoom.increment-percent=4.0
(+ zoom.max-percent, min-percent? min >= 1)
- No zoom commands. Instead: hint2-2-mode.zoom.percent=5.0, .center=...
- Always full screen
- Show hints on top of zoomed window, with scaled coordinates and size
+ Also scale grid and indicator
+ smooth-zoom-enabled=true, smooth-zoom-velocity (like smooth-jump)
+ Expensive if hints need to be recomputed
+ Hide hints while animating and compute hints only once with the final zoom percent?
+ ZoomSynchronization mouse-and-zoom-center-unsynchronized, zoom-center-follows-mouse
+ Or: always follow mouse but only if it moves (otherwise stay on last-selected-hint)
+ No because doesn't work with smooth jump
+ Actually maybe because MagSetWindowSource is expensive and if we can not call it when
moving the mouse, that is better.
- Font size, etc. should be decimals (because scaled by zoom): border width of 0.2: 0.2 * zoom(5.0) = 1px
- https://www.codeproject.com/Articles/42529/Outline-Text
- https://www.codeproject.com/KB/GDI/Glow_and_Shadow_effects.aspx
- font-outline-thickness, outline-color, outline-blur=true, (offset x/y?)
- Space each hint key, font-spacing-percent=1.0 means spaced evenly across the whole cell
- 0 means characters (hint keys) are drawn next to each other (first version: all characters at the cell center)
- Save the width of each hint key
- logging.redact-keys=true
- Empty position history problem: add current position if empty
- hint.box-border-length=1 means one dot (of size box.thickness) as the border?
+ Clear hint cache when reloading config?
- Group hint keys (e.g. top left quadrant starts with Q, top right starts with W)
- q w e r t a s d f g z x c v b y u i o p h j k l ; n m , . /
- hint2-2: q w e r u i o p a s d f j k l ; z x c v m , . /
- hint.grid-group-column-count=5, hint.grid-group-column-count=6
- sub-grid-?
- Increase row/col cell size until it can fit full sub-grids
- No: draw partial sub-grid. If not enough hint keys, then switch to length 3 or 4
+ readme: hint styling showcase
+ Pre-load hint meshes on startup to avoid first time lag
+ Try caching each key drawing into a small int[][]?
+ Window hint grid: must clear draw cache if size == 10
- key-alias.hint1key.qwerty=..., key-alias.hint1key.azerty=...
- Reload config file when layout changes?
- Layout names: us-qwerty, uk-qwerty, italian-qwerty, french-azerty
- Include defaults key-alias.hint1key, key-alias.hint1key.*, but if there is one
key-alias.hint1key(.*) in the config file then ignore the defaults
- Also include other key aliases: left/down/etc.
- Remove the heading # character for each key-alias you want to modify.
- previous-mode-selected-hint
- When switching mode, Map<List<Hint>, hintCenter==previous mode selected hint>
- WindowsFont that convert "Arial Bold Italic" to "Arial" + font style BoldItalic
- Divide hint cell into subcells with a sub grid style (box border thickness/length/color/opacity)
+ Click commmands that do both press and release?
+ normal-mode.reset-previous-hint-state=true
+ Goal: remove hint-xx-then-click modes, just have hint-xx- modes
+ timeout.only-if-idle: if hint not selected then not idling, otherwise hint is idling
+ Remove hint.swallow-hint-end-key-press? Always false
+ Remove mode-after-selection? Now becomes mode.to.normal-mode=+hintkey
+ Should hint undo be a command/combo? hint1-mode.hint.undo=+backspace | +hh
+ Problem when pressing backspace when at least one hint key is selected:
we do not want to go to another mode, but just perform the undo instead.
- Rename grid-row-oriented to layout-row-oriented
- hint-then-rightclick color
- Floating point inaccuracy issue
- Make hint cell size independent of zoom: HintManager creates hints in full-screen unzoomed coordinates, then when
a hint is selected, it uses the current zoom to determine the actual position of the hint
+ hint.screen-prefix-selection-keys=1 2 (default to none)