Add PageUp and PageDown keybind support

This commit is contained in:
Vladimir Rogozhin Assistant
2026-06-26 01:49:22 +02:00
committed by Teknium
parent 13acf7759e
commit 101dfd782d
3 changed files with 20 additions and 2 deletions

View File

@@ -85,8 +85,8 @@ export const KEYBIND_ACTIONS: readonly KeybindActionMeta[] = [
{ id: 'session.newWindow', category: 'session', defaults: ['mod+shift+n'] },
// ⌃Tab / ⌃⇧Tab — the universal tab-cycle chord. Literally Control, not Cmd
// (macOS reserves Cmd+Tab for app switching); see `ctrl` in combo.ts.
{ id: 'session.next', category: 'session', defaults: ['ctrl+tab'] },
{ id: 'session.prev', category: 'session', defaults: ['ctrl+shift+tab'] },
{ id: 'session.next', category: 'session', defaults: ['ctrl+tab', 'ctrl+pagedown'] },
{ id: 'session.prev', category: 'session', defaults: ['ctrl+shift+tab', 'ctrl+pageup'] },
...SESSION_SLOT_ACTIONS,
{ id: 'session.focusSearch', category: 'session', defaults: ['mod+shift+f'] },
{ id: 'session.togglePin', category: 'session', defaults: [] },

View File

@@ -82,6 +82,13 @@ describe('comboFromEvent — ctrl as a distinct modifier on macOS', () => {
expect(comboFromEvent(keydown({ code: 'Tab', ctrlKey: true }))).toBe('mod+tab')
expect(comboFromEvent(keydown({ code: 'Tab', ctrlKey: true, shiftKey: true }))).toBe('mod+shift+tab')
})
it('recognizes PageUp and PageDown chords', async () => {
const { comboFromEvent } = await loadCombo('MacIntel')
expect(comboFromEvent(keydown({ code: 'PageUp', ctrlKey: true }))).toBe('ctrl+pageup')
expect(comboFromEvent(keydown({ code: 'PageDown', ctrlKey: true }))).toBe('ctrl+pagedown')
})
})
describe('canonicalizeCombo', () => {
@@ -116,6 +123,13 @@ describe('formatCombo — honest Control labels', () => {
expect(formatCombo('ctrl+tab')).toBe('Ctrl+⇥')
expect(formatCombo('ctrl+shift+tab')).toBe('Ctrl+Shift+⇥')
})
it('renders PageUp and PageDown with compact labels', async () => {
const { formatCombo } = await loadCombo('Win32')
expect(formatCombo('ctrl+pageup')).toBe('Ctrl+PgUp')
expect(formatCombo('ctrl+pagedown')).toBe('Ctrl+PgDn')
})
})
describe('actionAllowedInInput', () => {

View File

@@ -33,6 +33,8 @@ const CODE_TO_KEY: Record<string, string> = {
Escape: 'escape',
Backspace: 'backspace',
Tab: 'tab',
PageUp: 'pageup',
PageDown: 'pagedown',
ArrowUp: 'up',
ArrowDown: 'down',
ArrowLeft: 'left',
@@ -169,6 +171,8 @@ const TOKEN_LABELS: Record<string, string> = {
escape: 'Esc',
backspace: '⌫',
tab: '⇥',
pageup: 'PgUp',
pagedown: 'PgDn',
space: 'Space',
up: '↑',
down: '↓',