# PCB: Quick Reference

## Key Mapping

### PCB Keystrokes

KEY | MNEMONIC | DESCRIPTION
--- | --- | ---
esc | panner | enter panning mode
insert | insert point | enter insert point mode. Click and drag on track to insert a point
space | select | enter select mode
tab | flip view | view: flip board
shift-del | del-cu | deletes connected copper (rats are considered a connection)
\ | thin-draw | toggles thin draw mode
shift-alt-a | unselect | clear selection
b | to other side | flip object to the other side of the board
shift-b | flip view | view: flip board
c | center | view: center display at cursor position
ctrl-c | copy to buffer | copy selection to buffer and unselect
d | display name | display pin or pad name
shift-d | pinout dialog | open pinout window for element under mouse cursor
e | eliminate rats | delete all rats
shift-e | eliminate some rats | delete selected rats
f | find | highlight connections to object under mouse cursor
shift-f | un-find | un-highlight found connections
g | increase grid | increment grid by configured grid increment
shift-g | decrease grid | decrement grid by configured grid increment
h | hide | toggle the visiblity of the refdes or value attached to the current component
ctrl-h | holeplate | toggle plating of a via. Used to produce non metalized mounting holes
j | lineclear | toggles line clears polygon
k | klearance | increment clearance (soldermask to copper edge)
shift-k | klear (-) | decrement clearance (soldermask to copper edge (NOTE: can go negative!))
l | increase line | increment width of the line tool, adds to the settings of the current line style
shift-l | decrease line | reduce the current linewidth
m | move to layer | move the object under the cursor to the current layer
shift-m | move selection to layer | move selected objects to the current working layer (see pcb tip)
ctrl-m | move origin | set the origin to the current position of the mouse pointer
n | name | show object refdes / pin number at mouse pointer
shift-n | next | Select the shortest unselected rat on the board
o | optimize rats | optimize and redraw all rats
shift-o | optimize some rats | optimize and redraw selected nets only
shift-p | polygon close | connect the first point of a polygon with the last
q | square toggle | toggle square/round corners on pads
ctrl-r | report | show object report
s | solid-poly | toggles polygon-clear of lines and pins (compare: thermal)
s | size | increment size
shift-s | size (-) | decrement size
alt-s | sizehole | increase the hole size
alt-shift-s | sizehole (-) | decrease the hole size
ctrl-s | sizehole | increase the hole size
ctrl-shift-s | sizehole (-) | decrease the hole size
v | view extents | global view of working area
z | zoom | view: zoom in
shift-z | un-zoom | view: zoom out
F1 | via | enter via tool
F2 | line | enter line tool
F3 | arc | enter arc tool
F4 | text | enter text tool
F5 | rectangle | enter rectangle tool
F6 | polygon | enter polygon tool
F7 | buffer | enter buffer mode
F8 | delete | enter remove mode
F9 | rotate | enter rotate mode
F10 | file menu | file menu
F11 | select | enter select mode (same as [space])
F12 | lock | enter lock mode

## Viewport Keystrokes

KEY | MNEMONIC | DESCRIPTION
--- | --- | ---
esc | panner |
v | view extents | global view of working area
c | center | centers view on cursor
z | zoom | zoom in
shift-z | un-zoom |
\ | thin-draw on/off | toggles thin draw mode
tab | flip view | flip board
shift-b | flip view | flip board

# Footprint Reference

The Master document for footprint creation is the PCB Manual. There is also Stuart Brorson’s Footprint Creation for the Open-Source Layout Program PCB.

## General syntax

A pcb footprint file may contain any of the following commands:

- `Element [element_flags, description, pcb-name, value, mark_x, mark_y, text_x, text_y, text_direction, text_scale, text_flags]`
- `Pad [x1 y1 x2 y2 thickness clearance mask name pad_number flags]`
- `Pin [x y thickness clearance mask drillholedia name number flags]`
- `ElementArc [x y r1 r2 startangle sweepangle thickness]`
- `ElementLine [x1 y1 x2 y2 thickness] –> thickness != 1000 = 10 mils almost for all footprints`
- Comment lines start with the ‘`#`’-sign

## Elements

`Element [element_flags, description, pcb-name, value, mark_x, mark_y, text_x, text_y, text_direction, text_scale, text_flags]`

item | allowed value | explanation | comment
--- | --- | --- | ---
element_flags | unsigned hex value |  |
description | string | text description of footprint | written by footprint author
pcb name | string | refdes used on this particular pcb | xxx
value | string | value of component on this particular pcb layout | xxx
mark_x | 1/100th mils |  |
mark_y | 1/100th mils |  |
text_x | 1/100th mils |  |
text_y | 1/100th mils |  |
text direction | decimal integer | 0=horiz; 1=ccw90; 2=180; 3=cw90 |
text_scale | decimal integer |  | usu. set 100
text_flags | unsigned hex |  |

## Pads

`Pad[x1 y1 x2 y2 thickness clearance mask name pad_number flags]`

Item | Allowed Value | Explanation | Comment
--- | --- | --- | ---
x1 | 1/100th mils | x(1st point) |
y1 | 1/100th mils | y(1st point) |
x2 | 1/100th mils | x(2nd point) |
y2 | 1/100th mils | y(2nd point) |
thickness | 1/100 mils | width of metal surrounding line segment | see Brorson .pdf
clearance | 1/100 mils | distance to any other copper on any layer | actually 1/2 of this number is used!
mask | 1/100th mils | width of mask relief | actual width of the mask centered on pad copper
name | string | name of pad (arb. string) | e.g. “pad_1” or “positive” or any other string
pad_number | string | pad # | used for nets. it MUST be consistent with the definitions on the netlist.
flags | hex value | xxx |

## Pins

`Pin[x y thickness clearance mask drillholedia name number flags]`

Item | Allowed Value | Explanation | Comment
--- | --- | --- | ---
x | 1/100th mils | pin x coord. |
y | 1/100th mils | pin y coord. |
thickness | 1/100th mils | copper diameter |
clearance | 1/100th mils | 2*(cu to cu clearance) | if you want a 10 mil clearance, put 2000 (20 mils) here
mask | 1/100th mils | diameter of mask aperture | actual dia. of hole in mask
drillholedia | 1/100th mils | dia. of hole |
name | string | arb. pin name |
number | decimal integer | pin number used by nets/rats |
flags | hex | xxx |

## Examples

- `Pad[-24606 14760 -19538 14760 1181 2000 3181 “” “16” “square”]`
- `Pad[-14760 19538 -14760 24606 1181 2000 3181 “” “17” “square,edge2”]`
- `Pin[0 0 12000 2000 12500 6400 “” “1” 0×00000001]`
- `ElementArc [0 0 6800 6800 0 360 1000]`
- `ElementLine [-26696 -26696 26696 -26696 1000]`
- `# notes within PCB Footprints go after the pound sign`