# Keyboard acceleration extension prototype

**URL:** <https://forum.openrefine.org/t/keyboard-acceleration-extension-prototype/434>\
**Category:** Development & Design\
**Created:** [February 10, 2023, 10:14am UTC](https://forum.openrefine.org/t/keyboard-acceleration-extension-prototype/434 "2023-02-10T10:14:23Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![abbe98](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.openrefine.org/abbe98/32/1299_2.png) [@abbe98](https://forum.openrefine.org/u/abbe98)\
**Post date:** [February 10, 2023, 10:14am UTC](https://forum.openrefine.org/t/keyboard-acceleration-extension-prototype/434/1 "2023-02-10T10:14:24Z")

</div>

I have made an extension prototyping a “command palette” approach to keyboard acceleration in OpenRefine(inspired by what one often sees in IDEs). Bugs are guaranteed but I would find it useful to see some thoughts on the approach as further development(support more column actions) would require some refactoring in core.

> **[openrefine-command-palette](https://codeberg.org/abbe98/openrefine-command-palette)**
>
> A command palette and keyboard acceleration extension for OpenRefine.

---

<div class="post-metadata">

**Author:** ![thadguidry](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.openrefine.org/thadguidry/32/653_2.png) [@thadguidry](https://forum.openrefine.org/u/thadguidry)\
**Post date:** [February 10, 2023, 10:40am UTC](https://forum.openrefine.org/t/keyboard-acceleration-extension-prototype/434/2 "2023-02-10T10:40:31Z")

</div>

Awesome! Can this be used to call custom Expression snippets?

---

<div class="post-metadata">

**Author:** ![abbe98](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.openrefine.org/abbe98/32/1299_2.png) [@abbe98](https://forum.openrefine.org/u/abbe98)\
**Post date:** [February 10, 2023, 10:46am UTC](https://forum.openrefine.org/t/keyboard-acceleration-extension-prototype/434/3 "2023-02-10T10:46:41Z")

</div>

Other extensions can register commands:

> **[openrefine-command-palette](https://codeberg.org/abbe98/openrefine-command-palette#extension-api)**
>
> A command palette and keyboard acceleration extension for OpenRefine.

Maybe the extension could be made so that it can auto discover things from the Menu-system but that would need quite a bit of upstream work as it’s very state-dependent at the moment. Very few of OpenRefines own column actions are supported right now as they are also very tightly coupled with the menus.

---

<div class="post-metadata">

**Author:** ![thadguidry](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.openrefine.org/thadguidry/32/653_2.png) [@thadguidry](https://forum.openrefine.org/u/thadguidry)\
**Post date:** [February 10, 2023, 10:53am UTC](https://forum.openrefine.org/t/keyboard-acceleration-extension-prototype/434/4 "2023-02-10T10:53:37Z")

</div>

forget the menus…  
I mean could someone use this to add a Custom Expression to fire off.  
Imagine a GREL snippet like:  
`cells.${MyColumn}.replace("abc","xyz")`  
and I could store that command in the palette as a custom command called “My Replace”.  
The command palette syntax would be:

1. CTRL+Space to open palette
2. begin typing “My Replace” and select it from list with up/down and ENTER.
3. then begin typing the column name, select it from list with up/down and ENTER.
4. rejoice

---

<div class="post-metadata">

**Author:** ![abbe98](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.openrefine.org/abbe98/32/1299_2.png) [@abbe98](https://forum.openrefine.org/u/abbe98)\
**Post date:** [February 10, 2023, 10:58am UTC](https://forum.openrefine.org/t/keyboard-acceleration-extension-prototype/434/5 "2023-02-10T10:58:37Z")

</div>

Ah I see, the answer is “soon”. 🙂

---

<div class="post-metadata">

**Author:** ![antonin\_d](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.openrefine.org/antonin_d/32/32_2.png) [@antonin\_d](https://forum.openrefine.org/u/antonin_d)\
**Post date:** [February 10, 2023, 11:10am UTC](https://forum.openrefine.org/t/keyboard-acceleration-extension-prototype/434/6 "2023-02-10T11:10:56Z")

</div>

Extremely exciting! It brings up a lot of interesting topics:

- how to rethink OpenRefine’s user experience in bold ways, and escape from those clumsy and overloaded menus
- how to restructure the code of our front-end to make this easier - perhaps this suggests refactorings that would be meaningful on their own and bring other benefits? I can definitely relate to the issue of coupling with menus at least.
- or is it even worth it and writing an independent front-end is the way to go?!
- to what extent this should be officially supported by an extension point, and how to decide what extension points to maintain

Maybe even others? Anyway - a lot of food for thought already!

---

<div class="post-metadata">

**Author:** ![abbe98](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.openrefine.org/abbe98/32/1299_2.png) [@abbe98](https://forum.openrefine.org/u/abbe98)\
**Post date:** [February 10, 2023, 1:21pm UTC](https://forum.openrefine.org/t/keyboard-acceleration-extension-prototype/434/7 "2023-02-10T13:21:49Z")

</div>

@antonin_d seems like we need that [BarCamp](https://forum.openrefine.org/t/organizing-an-openrefine-barcamp-in-2023/179/1)!

---

<div class="post-metadata">

**Author:** ![ostephens](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.openrefine.org/ostephens/32/8_2.png) [@ostephens](https://forum.openrefine.org/u/ostephens)\
**Post date:** [February 17, 2023, 11:08am UTC](https://forum.openrefine.org/t/keyboard-acceleration-extension-prototype/434/8 "2023-02-17T11:08:44Z")

</div>

This looks really interesting @abbe98 - I hope I get time to play around with it soon!

Owen
