private final boolean handleControl(int keycode, int[] cursor, boolean alt) {
		switch (keycode) {
		case KeyEvent.VK_A:
			cursor[1] = 0;
			cursor[2] = length();
			return true;
		case KeyEvent.VK_C:
			if (this.head > this.tail) {
				growAndCopy();
			}
			StringBuilder.clip.setContents(new StringSelection(new String(
					this.content[this.cIdx], this.head + cursor[1], cursor[2]
							- cursor[1])), null);
			return true;
		case KeyEvent.VK_Q:
			if (alt) {
				insert('@', cursor);
			}
			return true;
		case KeyEvent.VK_V:
			try {
				final String pasted = (String) StringBuilder.clip.getContents(
						null).getTransferData(DataFlavor.stringFlavor);
				for (final char c : pasted.toCharArray()) {
					insert(c, cursor);
					cursor[1] = cursor[2] = cursor[0];
				}
			} catch (final UnsupportedFlavorException | IOException e) {
				e.printStackTrace();
			}
			return true;
		default:
			break;
		}
		return false;
	}