Terminal Setup¶
Pi uses the Kitty keyboard protocol for reliable modifier key detection. Most modern terminals support this protocol, but some require configuration.
Kitty, iTerm2¶
Work out of the box.
Ghostty¶
Add to your Ghostty config (~/.config/ghostty/config):
WezTerm¶
Create ~/.wezterm.lua:
local wezterm = require 'wezterm'
local config = wezterm.config_builder()
config.enable_kitty_keyboard = true
return config
VS Code (Integrated Terminal)¶
keybindings.json locations:
- macOS: ~/Library/Application Support/Code/User/keybindings.json
- Linux: ~/.config/Code/User/keybindings.json
- Windows: %APPDATA%\\Code\\User\\keybindings.json
Add to keybindings.json to enable Shift+Enter for multi-line input:
{
"key": "shift+enter",
"command": "workbench.action.terminal.sendSequence",
"args": { "text": "\u001b[13;2u" },
"when": "terminalFocus"
}
Windows Terminal¶
Add to settings.json (Ctrl+Shift+, or Settings → Open JSON file):
{
"actions": [
{
"command": { "action": "sendInput", "input": "\u001b[13;2u" },
"keys": "shift+enter"
}
]
}
If you already have an actions array, add the object to it.
IntelliJ IDEA (Integrated Terminal)¶
The built-in terminal has limited escape sequence support. Shift+Enter cannot be distinguished from Enter in IntelliJ's terminal.
If you want the hardware cursor visible, set PI_HARDWARE_CURSOR=1 before running pi (disabled by default for compatibility).
Consider using a dedicated terminal emulator for the best experience.