Encode or decode text using the Vigenère cipher with a custom keyword, preserving non-letter characters.