Skip to content

⌨️ 快捷键

快捷键支持全局注册,注册后所有图表实例都可以使用。图表会监听键盘事件,但在 inputtextareacontenteditable 元素中不会触发快捷键。

内置快捷键如下:

名称按键说明
scrollRightShift+ArrowRight右移
scrollLeftShift+ArrowLeft左移
zoomInShift+EqualShift+NumpadAdd放大
zoomOutShift+MinusShift+NumpadSubtract缩小

自定义快捷键

通过 registerHotkey 可以像自定义指标一样全局注册快捷键。

javascript
import { registerHotkey } from 'klinecharts'

registerHotkey({
  name: 'scrollToRealTime',
  keys: 'R',
  action: ({ chart }) => {
    chart.scrollToRealTime()
  }
})

keys 可以是字符串,也可以是字符串数组。

javascript
registerHotkey({
  name: 'customZoomIn',
  keys: ['Shift+=', 'Shift+NumpadAdd'],
  action: ({ chart }) => {
    chart.zoomAtCoordinate(1.2)
  }
})

快捷键配置支持以下字段:

typescript
interface HotkeyTemplate {
  name: string
  keys: string | string[]
  preventDefault?: boolean
  stopPropagation?: boolean
  check?: (params) => boolean
  action: (params) => void
  extendData?: unknown
}

check 返回 false 时不会执行 action。默认会调用 event.preventDefault(),可以通过 preventDefault: false 关闭。

按键字符串由修饰键和按键组成,例如 Shift+ArrowLeftCtrl+SMeta+ZMod+Z。其中 Mod 在 macOS、iOS 上表示 Meta,其他系统表示 Ctrl。常用别名包括 Command/CmdControlOptionPlusMinusEscDelLeftRightUpDown

实例控制

图表实例可以通过初始化参数控制是否启用快捷键,以及排除哪些全局快捷键。

javascript
const chart = init('chart', {
  hotkey: {
    enabled: true,
    exclude: ['zoomIn']
  }
})

也可以在实例创建后通过 setHotkey 更新,并通过 getHotkey 获取当前实例的快捷键配置。

javascript
chart.setHotkey({
  enabled: false
})

chart.setHotkey({
  enabled: true,
  exclude: ['zoomIn']
})

const hotkey = chart.getHotkey()

可以通过 getSupportedHotkeys 获取当前已注册的快捷键名称,通过 getHotkey 获取某个快捷键配置。

javascript
import { getSupportedHotkeys, getHotkey } from 'klinecharts'

const names = getSupportedHotkeys()
const zoomIn = getHotkey('zoomIn')