The new brush in v4 captures the shift, alt and meta keys to perform some
actions by default. To get around this, I forked d3-brush and modified it
so that it doesn't capture the shift events. The new version (d3-brush-lite)
can be found on github. There
is an open github issue to
disable this behavior in d3-brush.

Because the d3-drag behavior consumes all events in v4, it is no longer
necessary to stop propagation.

The brush creates its own overlay which catches all events meaning that we
don't need to turn the zoom behavior off when the shift key is pressed.

Whether a node is fixed is specified by the .fx and .fy parameters. This
eliminates the need to set the .fixed parameter on each node.