      case 'ArrowLeft':
        case 'ArrowDown':
          newValue -= 1
          break
        case 'ArrowRight':
        case 'ArrowUp':
          newValue += 1
          break
        case 'PageDown':
          newValue -= 2
          break
        case 'PageUp':
          newValue += 2
          break
        case 'Home':
          newValue = 0
          break
        case 'End':
          newValue = 10
          break
        default:
          break
      }

      newValue = Math.max(Math.min(newVal