Dial-a-sketch, a mission to map all keyboard shortcuts to the numpad.

Have some feature requests, feedback, cool stuff to share, or want to know where FreeCAD is going? This is the place.
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
Post Reply
User avatar
Wolf Icefang
Posts: 4
Joined: Tue Apr 13, 2021 4:05 pm

Dial-a-sketch, a mission to map all keyboard shortcuts to the numpad.

Post by Wolf Icefang »

Image

(This is just a photo of my desk setup. I expect it to entice you to read further. As a side note, I don't know how to make images smaller here in the FreeCAD Forum. Any advice?)

Disclaimer: Dial-a-sketch is currently a proof of concept. I've spent just 3 days on it so far. If you know of any pre-existing designs that do what I'm doing, or if you see anything I should change, TELL ME NOW before I build any muscle memory.

Ok, but what actually IS dial-a-sketch? It's a system of keyboard shortcuts I came up with so that I never have to take my hand off the number pad. Unlike traditional keyboard shortcuts, where each key is associated with the name of an action, dial-a-sketch ties each key to a basic concept, then you chain concepts together to create the action you want to accomplish. For example, if you wanted to create a loft, you would dial M489. M=part design (remapped to my mouse), 4=complex, 8=additive, and 9=pad. If you wanted to create a lofted cut, you would dial M459, because 5=cut. If you wanted to make a regular pad, you would dial M89, dropping the 4 because pads are not complicated. The basic concept for each key is this:

Code: Select all

		  7		  8		  9
(part design)	pattern		additive	pad
(sketch)	use existing	polyline, rim	polygon
(constrain)	lock		colinear	intersect


		  4		  5		  6
(part design)	complex		cut		revolve
(sketch)	vertical	point, center	circle
(constrain)	vertical	coincident	diameter


		  1		  2		  3
(part design)	feature		datum		junk drawer
(sketch)	horizontal	construction	arc
(constrain)	horizontal	reference	radius

		  0				  .
		measure (constraint)		snell's law
Image

Hopefully that gave you a basic mental image of the dialer layout, but I've found it very difficult to convey what the keys represent and how they relate to each other. Fortunately, there are a few neat organizational tricks I've employed to tidy things up. You'll note that the upper row involves "more", while the lower rows involve "less". 8 is about creating lines or extruding shapes, 5 is about cutting things or creating single points, and 2 is devoted entirely to invisible items: datums, construction lines, and reference dimensions. In terms of columns, the rightmost column is all about shapes, the central column deals with points and lines, and the leftmost column is all about modifications to existing things (The left column came together by accident, so it's not as structured as the others.)
I've also employed a simple technique used in ergonomic keyboard layouts: actions are designed to "flow" horizontally, using multiple fingers. Contradicting concepts are placed in the same column to minimize repeated use of the same finger. For example, in the sketcher, 6 is circle and 9 is polygon. You will *sometimes* dial 69 for slot, but you're more regularly going to dial 65 for "circle with a center point" and 68 for "circle defined by a rim".
Just two more things:
First, I set up dial-a-sketch to be used on my Corne, a keyboard you can learn about in the r/crkbd subreddit. I also use the Colemak-DH keyboard layout instead of standard qwerty, which you can read about here: https://colemakmods.github.io/mod-dh/ . I'm using letters, not numbers, to dial in my codes. 123456789 corresponds to XCDRSTWFP on my board, so whatever config files I have won't work for you.
Second, I made a Reddit post to announce this... project? Idea? Whatever it ends up being. It's the same contents, but if you want to go upvote it, do so here: https://www.reddit.com/r/FreeCAD/commen ... &context=3

And now: an unabridged list of all dial-a-sketch codes!

Part design: M, (I mapped m to my mouse as the first key in any Part Design sequence; it also cycles the Polyline modes in the Sketcher.)
2,5 datum point
2,8 datum line
2,9 datum plane
2,3 datum coordinate system

8,9 pad
8,6 revolve
4,8,9 loft
4,8,6 helix
4,8,3 sweep (also called pipe)
primitive (not mapped, too many variants.)

5,9 cut
5,6 revolve cut
5,3 hole
4,5,9 loft cut
4,5,6 helix cut
4,5,3 sweep cut
primitive cut (not mapped, too many variants.)

7,8 mirror
7,9 linear pattern
7,6 polar pattern
7,3 multitransform pattern

1,6 fillet
1,8 chamfer
1,9 draft
1,3 thick solid (I haven't tried this tool out yet, what does it do?)

2,2 Boolean operation


Sketcher: No prefix, this makes dialing sketcher codes faster.
5 point
8 line (polyline)
3,5 arc, centerpoint
3,8 arc, rim
6,5 circle, centerpoint
6,8 circle, rim
3,3,5 arc ellipse centerpoint
6,6,5 circular ellipse centerpoint
6,6,8 circular ellipse rim
6,3 B-spline, control (open shape)
3,6 B-spline, periodic control (closed shape)
8 Polyline (same as line)
9,8 Rectangle
9,5 centerpoint polygon with N sides.
6,9 slot

7,3 fillet (regular)
7,6 fillet (constraint-retaining)
7,5 Trim
7,8 Extend
7,9 Link to external geometry
7,7 copy geometry
2 make construction geometry


Sketcher constraints: (+ is the prefix)
5,5 Coincident Point
5,9 Point on object
5,8 symmetrical

1 horizontal
4 vertical

8,8 parallel
8,9 perpendicular
8,6 tangent

7 block movement

2,2 switch between driving and reference modes
2,7 activate/deactivate selected constraints


Sketcher measurement constraints: 0, (this prefix can be inconvenient for traditional number pads; on my keyboard I can press it with my thumb.)
0 equal (remember, this means hit 0 twice, first as the prefix and again for the command.)

7 lock with dimensions

1 measure horizontal
4 measure vertical
8 measure distance

3 measure radius
6 measure diameter
9 measure angle

. Snell's law (I have literally never clicked on this but somehow it ended up with its own dedicated key.)


Bonus: dial-a-sketch for viewing angles. prefix: shift

Code: Select all

7 zoom to fit		8 top		9 trimetric
4 left			5 front		6 right
1 normal to sketch	2 bottom	3 toggle visibility
			0 backside
As stated in the beginning, I created Dial-a-sketch in three days and looked exclusively at the Part Design and Sketcher workbenches. I would be willing to accept a complete overhaul if it was necessary to make it work with other workbenches, or just to make it more convenient.


What's next:
I have a relatively clear mental picture of dial-a-sketch in my head, but getting it into writing (or any format, really) has proven quite difficult. Any advice for "showing" dial-a-sketch more clearly would be appreciated.

The list of codes is far from complete! I haven't even opened the TechDraw, Part, or Assembly4 workbenches yet, let alone understood them. Additional view-related codes would be nice. (wireframe/solid, section view, navigation between tabs, etc.) There are a few missing odds and ends as well, such as entering/exiting a sketch or creating a sketch. Finally, I'm thinking of using ctrl as a prefix for menu bar actions. Saving, undo/redo, measuring objects, and macros could all fit under that category.

If someone with a more traditional keyboard layout tries dial-a-sketch, they may want to share their config files to make it easier for others to join in the fun. I don't even know where shortcuts are stored, to be honest.

It would be really nice if FreeCAD could filter keyboard shortcuts based on the current workbench. Is this already possible? If so, how is it done? I don't like to type M before every Part Design code. It would also make the addition of more workbenches relatively easy.
“Would it not be preferable to plunge the rest of the world into ignorance, the better to rule over it?”
They fail to notice that they will last but an instant; and they wish to sacrifice the happiness of future centuries and the entire species.
User avatar
Wolf Icefang
Posts: 4
Joined: Tue Apr 13, 2021 4:05 pm

Re: Dial-a-sketch, a mission to map all keyboard shortcuts to the numpad.

Post by Wolf Icefang »

Here ye, here ye! Introducing my latest innovation, Dial-A-Sketch 2.0! It features a totally new layout and is significantly easier to pick up and learn. As a bonus, I formatted it to actually be legible on Reddit this time. Check it out here:
https://www.reddit.com/r/FreeCAD/commen ... s_is_more/
“Would it not be preferable to plunge the rest of the world into ignorance, the better to rule over it?”
They fail to notice that they will last but an instant; and they wish to sacrifice the happiness of future centuries and the entire species.
Post Reply