<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def OnMouseWheel(self, event):
 """Event handler for mouse wheel actions Invokes zoom when mouse when Ctrl is also pressed """


        if event.ControlDown():
            if event.WheelRotation > 0:
                post_command_event(self.grid, self.grid.ZoomInMsg)
            else:
                post_command_event(self.grid, self.grid.ZoomOutMsg)

        elif self.main_window.IsFullScreen():
            if event.WheelRotation > 0:
                newtable = self.grid.current_table - 1
            else:
                newtable = self.grid.current_table + 1

            post_command_event(self.grid, self.GridActionTableSwitchMsg,
                               newtable=newtable)
            return

        else:
            wheel_speed = config["mouse_wheel_speed_factor"]
            x, y = self.grid.GetViewStart()
            direction = wheel_speed if event.GetWheelRotation() < 0 \
                else -wheel_speed
            if event.ShiftDown():
                # Scroll sideways if shift is pressed.
                self.grid.Scroll(x + direction, y)
            else:
                self.grid.Scroll(x, y + direction)