alternate cell keyboard events using a mixin
would need to pass this in (via a prop? or a column prop?)
also needs to support moving cells, which means also operating at the row level