# Capturing Ctrl-S doesn't work, opens browser's save dialog

**URL:** https://discuss.codemirror.net/t/capturing-ctrl-s-doesnt-work-opens-browsers-save-dialog/5228
**Category:** v6
**Created:** [November 1, 2022, 8:08pm UTC](https://discuss.codemirror.net/t/capturing-ctrl-s-doesnt-work-opens-browsers-save-dialog/5228 "2022-11-01T20:08:00Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![Boscop](https://discuss.codemirror.net/user_avatar/discuss.codemirror.net/boscop/32/2640_2.png) [@Boscop](https://discuss.codemirror.net/u/Boscop)
#### Post date: [November 1, 2022, 8:08pm UTC](https://discuss.codemirror.net/t/capturing-ctrl-s-doesnt-work-opens-browsers-save-dialog/5228/1 "2022-11-01T20:08:00Z")

</div>

Hi, thanks for this great library!  
In my use case, I want to capture `Ctrl-S` (or `Mod-S`) to do a “save”/“compile” action.  
It seems that Codemirror 5 had this possibility: [CodeMirror 5 User Manual](https://codemirror.net/5/doc/manual.html)

> `save` Ctrl-S (PC), Cmd-S (Mac)  
> Not defined by the core library, only referred to in key maps. Intended to provide an easy way for user code to define a save command.

How to do this with v6?  
I tried

```js
Prec.highest(keymap.of([{
	key: "Mod-S",
	run({ state }) { console.log(state.doc); on_compile(); return true }
}])),

```

but if I press Ctrl+S, it opens the default save dialog of the browser.  
How can I do the equivalent of `preventDefault` for this case, to make my handler work? 🙂

Similarly, can I also do this for Ctrl-L or F5?

Originally I wanted to use Ctrl-Space, but that is already used with `Prec.highest` by the `autocompletion` extension, and even if I put my binding also with `Prec.highest` before `basicSetup` in the extensions array, it still doesn’t run my handler for some reason.

---

<div class="post-metadata">

### Author: ![marijn](https://discuss.codemirror.net/user_avatar/discuss.codemirror.net/marijn/32/136_2.png) [@marijn](https://discuss.codemirror.net/u/marijn)
#### Post date: [November 1, 2022, 8:46pm UTC](https://discuss.codemirror.net/t/capturing-ctrl-s-doesnt-work-opens-browsers-save-dialog/5228/2 "2022-11-01T20:46:59Z")

</div>

Use `Mod-s` instead (`Mod-S` will only be matched when shift is held).

---

<div class="post-metadata">

### Author: ![Boscop](https://discuss.codemirror.net/user_avatar/discuss.codemirror.net/boscop/32/2640_2.png) [@Boscop](https://discuss.codemirror.net/u/Boscop)
#### Post date: [November 1, 2022, 8:48pm UTC](https://discuss.codemirror.net/t/capturing-ctrl-s-doesnt-work-opens-browsers-save-dialog/5228/3 "2022-11-01T20:48:36Z")

</div>

Ah, thanks!  
Btw, what about Ctrl-L and F5, can I capture those and prevent the default browser action? 🙂

---

<div class="post-metadata">

### Author: ![marijn](https://discuss.codemirror.net/user_avatar/discuss.codemirror.net/marijn/32/136_2.png) [@marijn](https://discuss.codemirror.net/u/marijn)
#### Post date: [November 1, 2022, 10:35pm UTC](https://discuss.codemirror.net/t/capturing-ctrl-s-doesnt-work-opens-browsers-save-dialog/5228/4 "2022-11-01T22:35:58Z")

</div>

Not sure, depends on the browser. Try and see.

---

<div class="post-metadata">

### Author: ![Boscop](https://discuss.codemirror.net/user_avatar/discuss.codemirror.net/boscop/32/2640_2.png) [@Boscop](https://discuss.codemirror.net/u/Boscop)
#### Post date: [November 2, 2022, 2:36pm UTC](https://discuss.codemirror.net/t/capturing-ctrl-s-doesnt-work-opens-browsers-save-dialog/5228/5 "2022-11-02T14:36:20Z")

</div>

Hm, but how can I do `event.preventDefault()`, how can I get access to the event? 🙂
