#8209·alacritty

How can I make Alacritty handle key combinations with the fn key correctly?

Author: alsolovyevCreated Oct 1, 2024Updated Aug 28, 2026
LabelsH - macos

In the new version of macOS Sequoia, hotkeys for window management (fn + control + top|right|bottom|left) have been introduced, and they work with all applications except Alacritty (I previously used custom shortcuts that didn't involve fn). However, when trying to move the Alacritty window to the left (fn + control + left), instead of the expected behavior, [1;5H appears on the screen (to the right — [1;5F and so on). I can't figure out how to make Alacritty handle these key combinations correctly. Is it possible to fix this?

System

OS: macOS Version: 0.13.2 (bb8ea18)

Logs

alacritty -vv
[0.000002542s] [INFO ] [alacritty] Welcome to Alacritty
[0.000253250s] [INFO ] [alacritty] Version 0.13.2 (bb8ea18)
[0.000582625s] [INFO ] [alacritty] Configuration files loaded from:
                                    "/Users/name/.config/alacritty/alacritty.toml"
[0.000734459s] [DEBUG] [alacritty] Using environment locale: C/UTF-8/C/C/C/C
[0.031354792s] [INFO ] [alacritty] Using Apple CGL
[0.043909292s] [DEBUG] [alacritty] Picked GL Config:
                                    buffer_type: Some(Rgb { r_size: 8, g_size: 8, b_size: 8 })
                                    alpha_size: 8
                                    num_samples: 0
                                    hardware_accelerated: true
                                    supports_transparency: Some(true)
                                    config_api: Api(OPENGL)
                                    srgb_capable: true
[0.060312334s] [INFO ] [alacritty] Window scale factor: 2
[0.061302000s] [DEBUG] [alacritty] Loading "JetBrainsMono Nerd Font Mono" font
[0.105383542s] [INFO ] [alacritty] Running on Apple M1 Pro
[0.105435167s] [INFO ] [alacritty] OpenGL version 4.1 Metal - 89.3, shader_version 4.10
[0.105443917s] [INFO ] [alacritty] Using OpenGL 3.3 renderer
[0.108642209s] [DEBUG] [alacritty] Filling glyph cache with common glyphs
[0.117177042s] [INFO ] [alacritty] Cell size: 16 x 37
[0.117203584s] [INFO ] [alacritty] Padding: 28 x 28
[0.117211834s] [INFO ] [alacritty] Width: 1496, Height: 944
[0.123873375s] [INFO ] [alacritty] PTY dimensions: 24 x 90
[0.125747417s] [INFO ] [alacritty] Initialisation complete
2024-10-01 07:56:19.503 alacritty[16358:1171359] +[IMKClient subclass]: chose IMKClient_Legacy
2024-10-01 07:56:19.503 alacritty[16358:1171359] +[IMKInputSession subclass]: chose IMKInputSession_Legacy
alacritty --config-file /dev/null --print-events

[1.942925625s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 100472, tv_nsec: 351361750 }, requested_resume: Some(Instant { tv_sec: 100472, tv_nsec: 356139625 }) })
[1.942945042s] [INFO ] [alacritty] winit event: AboutToWait
[1.948334417s] [INFO ] [alacritty] winit event: NewEvents(ResumeTimeReached { start: Instant { tv_sec: 100472, tv_nsec: 351412208 }, requested_resume: Instant { tv_sec: 100472, tv_nsec: 356139625 } })
[1.948390667s] [INFO ] [alacritty] winit event: AboutToWait
[1.948416709s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 100472, tv_nsec: 356863375 }, requested_resume: None })
[1.948434250s] [INFO ] [alacritty] winit event: UserEvent(Event { window_id: Some(WindowId(WindowId(5469621344))), payload: Frame })
[1.948446875s] [INFO ] [alacritty] winit event: AboutToWait
[1.948459834s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 100472, tv_nsec: 356912458 }, requested_resume: None })
[1.948472000s] [INFO ] [alacritty] winit event: AboutToWait
[1.980238250s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 100472, tv_nsec: 356936333 }, requested_resume: None })
[1.980724084s] [INFO ] [alacritty] winit event: WindowEvent { window_id: WindowId(WindowId(5469621344)), event: KeyboardInput { device_id: DeviceId(DeviceId), event: KeyEvent { physical_key: Code(Home), logical_key: Named(Home), text: None, location: Standard, state: Released, repeat: false, platform_specific: KeyEventExtra { text_with_all_modifiers: Some("\\\u{f729}"), key_without_modifiers: Named(Home) } }, is_synthetic: false } }
[1.980758000s] [INFO ] [alacritty] winit event: AboutToWait
[2.290964625s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 100472, tv_nsec: 389230208 }, requested_resume: None })
[2.292146625s] [INFO ] [alacritty] winit event: WindowEvent { window_id: WindowId(WindowId(5469621344)), event: KeyboardInput { device_id: DeviceId(DeviceId), event: KeyEvent { physical_key: Code(ControlLeft), logical_key: Named(Control), text: None, location: Left, state: Released, repeat: false, platform_specific: KeyEventExtra { text_with_all_modifiers: None, key_without_modifiers: Named(Control) } }, is_synthetic: false } }
[2.292244625s] [INFO ] [alacritty] winit event: WindowEvent { window_id: WindowId(WindowId(5469621344)), event: ModifiersChanged(Modifiers { state: ModifiersState(0x0), pressed_mods: ModifiersKeys(0x0) }) }
[2.292304709s] [INFO ] [alacritty] winit event: AboutToWait
[2.322188959s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 100472, tv_nsec: 700824541 }, requested_resume: None })
[2.323157500s] [INFO ] [alacritty] winit event: AboutToWait
[3.150401042s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 100472, tv_nsec: 731679375 }, requested_resume: None })
[3.151381792s] [INFO ] [alacritty] winit event: WindowEvent { window_id: WindowId(WindowId(5469621344)), event: KeyboardInput { device_id: DeviceId(DeviceId), event: KeyEvent { physical_key: Code(ControlLeft), logical_key: Named(Control), text: None, location: Left, state: Pressed, repeat: false, platform_specific: KeyEventExtra { text_with_all_modifiers: None, key_without_modifiers: Named(Control) } }, is_synthetic: false } }
[3.151444292s] [INFO ] [alacritty] winit event: WindowEvent { window_id: WindowId(WindowId(5469621344)), event: ModifiersChanged(Modifiers { state: ModifiersState(CONTROL), pressed_mods: ModifiersKeys(LCONTROL) }) }
[3.151537917s] [INFO ] [alacritty] winit event: AboutToWait
[3.185362167s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 100473, tv_nsec: 560065250 }, requested_resume: None })
[3.186041125s] [INFO ] [alacritty] winit event: AboutToWait
[3.590465209s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 100473, tv_nsec: 594547916 }, requested_resume: None })
[3.593502584s] [INFO ] [alacritty] winit event: WindowEvent { window_id: WindowId(WindowId(5469621344)), event: KeyboardInput { device_id: DeviceId(DeviceId), event: KeyEvent { physical_key: Code(End), logical_key: Named(End), text: None, location: Standard, state: Pressed, repeat: false, platform_specific: KeyEventExtra { text_with_all_modifiers: Some("\\\u{f72b}"), key_without_modifiers: Named(End) } }, is_synthetic: false } }
[3.593574167s] [INFO ] [alacritty] winit event: AboutToWait
[3.594025417s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 100474, tv_nsec: 2073000 }, requested_resume: None })
[3.594088500s] [INFO ] [alacritty] winit event: UserEvent(Event { window_id: Some(WindowId(WindowId(5469621344))), payload: Terminal(Wakeup) })
[3.594132542s] [INFO ] [alacritty] winit event: UserEvent(Event { window_id: Some(WindowId(WindowId(5469621344))), payload: Terminal(Wakeup) })
[3.594166875s] [INFO ] [alacritty] winit event: UserEvent(Event { window_id: Some(WindowId(WindowId(5469621344))), payload: Terminal(Wakeup) })
[3.594191542s] [INFO ] [alacritty] winit event: UserEvent(Event { window_id: Some(WindowId(WindowId(5469621344))), payload: Terminal(Wakeup) })
[3.594224209s] [INFO ] [alacritty] winit event: WindowEvent { window_id: WindowId(WindowId(5469621344)), event: RedrawRequested }
[3.598391250s] [INFO ] [alacritty] winit event: AboutToWait
[3.598443209s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 100474, tv_nsec: 6891458 }, requested_resume: None })
[3.598469584s] [INFO ] [alacritty] winit event: UserEvent(Event { window_id: Some(WindowId(WindowId(5469621344))), payload: Frame })
[3.598494209s] [INFO ] [alacritty] winit event: AboutToWait
[3.711163209s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 100474, tv_nsec: 6965166 }, requested_resume: None })
[3.712730417s] [INFO ] [alacritty] winit event: WindowEvent { window_id: WindowId(WindowId(5469621344)), event: KeyboardInput { device_id: DeviceId(DeviceId), event: KeyEvent { physical_key: Code(End), logical_key: Named(End), text: None, location: Standard, state: Released, repeat: false, platform_specific: KeyEventExtra { text_with_all_modifiers: Some("\\\u{f72b}"), key_without_modifiers: Named(End) } }, is_synthetic: false } }
[3.712823792s] [INFO ] [alacritty] winit event: AboutToWait
[3.982191875s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 100474, tv_nsec: 121317625 }, requested_resume: None })
[3.983181000s] [INFO ] [alacritty] winit event: WindowEvent { window_id: WindowId(WindowId(5469621344)), event: KeyboardInput { device_id: DeviceId(DeviceId), event: KeyEvent { physical_key: Code(ControlLeft), logical_key: Named(Control), text: None, location: Left, state: Released, repeat: false, platform_specific: KeyEventExtra { text_with_all_modifiers: None, key_without_modifiers: Named(Control) } }, is_synthetic: false } }
[3.983307084s] [INFO ] [alacritty] winit event: WindowEvent { window_id: WindowId(WindowId(5469621344)), event: ModifiersChanged(Modifiers { state: ModifiersState(0x0), pressed_mods: ModifiersKeys(0x0) }) }
[3.983365334s] [INFO ] [alacritty] winit event: AboutToWait
[3.993531084s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 100474, tv_nsec: 391875166 }, requested_resume: None })
[3.994310334s] [INFO ] [alacritty] winit event: AboutToWait
[5.040251834s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 100474, tv_nsec: 402823458 }, requested_resume: None })
[5.041902292s] [INFO ] [alacritty] winit event: AboutToWait
[5.528022250s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 100475, tv_nsec: 450452708 }, requested_resume: None })
[5.529376167s] [INFO ] [alacritty] winit event: WindowEvent { window_id: WindowId(WindowId(5469621344)), event: KeyboardInput { device_id: DeviceId(DeviceId), event: KeyEvent { physical_key: Code(SuperLeft), logical_key: Named(Super), text: None, location: Left, state: Pressed, repeat: false, platform_specific: KeyEventExtra { text_with_all_modifiers: None, key_without_modifiers: Named(Super) } }, is_synthetic: false } }
[5.529483292s] [INFO ] [alacritty] winit event: WindowEvent { window_id: WindowId(WindowId(5469621344)), event: ModifiersChanged(Modifiers { state: ModifiersState(SUPER), pressed_mods: ModifiersKeys(LSUPER) }) }
[5.529540959s] [INFO ] [alacritty] winit event: AboutToWait
[5.635159125s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 100475, tv_nsec: 938082875 }, requested_resume: None })
[5.642923375s] [INFO ] [alacritty] winit event: LoopExiting