You can determine whether CurrentCellKeyUp and CurrentCellKeyDown is called through the CurrentCellControlKeyMessage event. Here is a handler that guarantees controlkey and shiftkey are passed to both CurrentCellKeyDown and CurrentCellKeyUp. You can modify it for the keys you want to catch there.
private void grid_CurrentCellControlKeyMessage(object sender, GridCurrentCellControlKeyMessageEventArgs e)
{
Keys keyCode = (Keys) ((int)e.Msg.WParam) & Keys.KeyCode;
if(keyCode == Keys.ShiftKey || keyCode == Keys.ControlKey)
{
e.CallProcessKeyPreview = false;
e.CallBaseProcessKeyMessage = false;
}
}