private void rotateAtoms(BitSet bs) {
		boolean pgUp = (keyCode & Navigator.PGUP_PRESSED) == Navigator.PGUP_PRESSED;
		boolean pgDn = (keyCode & Navigator.PGDN_PRESSED) == Navigator.PGDN_PRESSED;
		boolean up = pgUp ? true : (keyCode & Navigator.UP_PRESSED) == Navigator.UP_PRESSED;
		boolean dn = pgDn ? true : (keyCode & Navigator.DOWN_PRESSED) == Navigator.DOWN_PRESSED;
		if (!up)
			up = (keyCode & Navigator.RIGHT_PRESSED) == Navigator.RIGHT_PRESSED;
		if (!dn)
			dn = (keyCode & Navigator.LEFT_PRESSED) == Navigator.LEFT_PRESSED;
		char axis = 'z';
		if ((keyCode & Navigator.X_PRESSED) == Navigator.X_PRESSED)
			axis = 'x';
		else if ((keyCode & Navigator.Y_PRESSED) == Navigator.Y_PRESSED)
			axis = 'y';
		float t = KeyboardParameterManager.sharedInstance().getRotationAngle(
				pgUp || pgDn ? KeyboardParameterManager.FAST : KeyboardParameterManager.SLOW);
		if (!up)
			t = -t;
		model.rotateSelectedAtoms(bs, axis, t);
		if (shouldRejectMoving(bs)) { // roll back the last rotation step
			model.rotateSelectedAtoms(bs, axis, -t);
		}
		refresh();
	}