Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
404 changes: 404 additions & 0 deletions MANUAL.md

Large diffs are not rendered by default.

84 changes: 51 additions & 33 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
# Reaper keys
# reaper-keys

<p align="center"><img src="https://i.ibb.co/QHrVqNK/reaper-keys.png" alt="reaper-keys" border="0" /></p>

Reaper keys is an extension for the [REAPER DAW](https://www.reaper.fm/) that provides a
new action mapping system based on key sequences instead of key chords. The system is
similar to [Vim](https://en.wikipedia.org/wiki/Vim_%28text_editor%29), a modal text
editor, and by default comes with vim-like bindings.
Reaper keys is an extension for the [Reaper DAW](https://www.reaper.fm/) that
provides a new action mapping system based on key sequences instead of key
chords. The system is similar to
[vim](https://en.wikipedia.org/wiki/Vim_%28text_editor%29), a modal text editor,
and by default comes with vim-like bindings.

Click [here](https://youtu.be/ChuZswEfQuo) for a very outdated and low quality demo for v1 or jump
to [examples](#some-ideas-to-start-with).
Click [here](https://youtu.be/ChuZswEfQuo) for a very outdated and low quality
demo for v1 or jump to [examples](#some-ideas-to-start-with).

## Pros

Expand All @@ -20,19 +21,20 @@ to [examples](#some-ideas-to-start-with).

## Installation

- Add `https://raw.githubusercontent.com/gwatcha/reaper-keys/master/index.xml` to Reapack.
- Install [SWS](https://sws-extension.org/) by hand or from ReaTeam Extensions.
- Add `https://raw.githubusercontent.com/gwatcha/reaper-keys/master/index.xml`
to Reapack.

## Features
### Bind key sequences

With Reaper keys you may bind key sequences to actions rather then singular key presses.
This allows one to hierarchically organize many keybindings.
A completion/feedback window is provided to assist with command completion.
With Reaper keys you may bind key sequences to actions rather than singular key
presses. This allows one to hierarchically organize many keybindings. A
completion/feedback window is provided to assist with command completion.

<a href="https://ibb.co/N3fgVYP"><img src="https://i.ibb.co/N3fgVYP/completions.gif" alt="completions" border="0" /></a>

### Compose actions
### Actions composition

Reaper keys lets one compose actions of different types to create new commands. For
example, in normal mode, any action with `timeline motion` type can follow any one with
Expand All @@ -48,7 +50,7 @@ This grows the number of available actions exponentially but still preserves you
as you only need to know the `timeline_motions`, `timeline_operators`, and the fact that
you can compose them.

### Multi-modal
### Multiple key modes

Changing modes changes the way keys compose. By default, it is in `normal` mode, but you
could for example go into `visual timeline` mode by pressing `v`.
Expand All @@ -62,20 +64,38 @@ commands.

### Macros

Macros are a way to save a sequence of commands, and play them back later.

To record a macro, enter `q` and an arbitrary character to specify the `register` that the
macro will save into. Then, perform a series of actions, and finish recording by pressing
`q`.
Macros are a way to save a sequence of commands and play them back later. To
record a macro, enter `q` and an arbitrary character to specify the `register`
that the macro will save into. Then, perform a series of actions, and finish
recording by pressing `q`.

<a href="https://ibb.co/z7zsS81"><img src="https://i.ibb.co/z7zsS81/macro-rec.gif"
alt="macro-rec" border="0" /></a>

You may play it back by entering `@` and the character you specified earlier. Optionally,
prefix it with a number to indicate the number of repetitions.
You may play it back by entering `@` and the character you specified earlier.
Optionally, prefix it with a number to indicate the number of repetitions.

<a href="https://ibb.co/884T1fR"><img src="https://i.ibb.co/884T1fR/macro-play.gif" alt="macro-play" border="0" /></a>

### Marks

Press `m` in any mode and then enterer a `register` key and reaper-keys will
will store a mark which will save the current track selection, time selection,
and edit cursor position.

- In visual mode, the mark creates a visible region.
- In normal mode, the mark creates a visible marker.
- In visual track mode, the mark does not create anything apart from the mark.

There are four key bindings that make use of stored marks:

| Key | Action Name | Action Type | Function |
|-------| ------------------------| -----------------| ---------------------------|
| ` | `MarkedTimelinePosition`| timeline motion | Recall edit cursor position|
| ' | `MarkedTracks` | track selector | Recall selected tracks |
| ~ | `MarkedRegion` | timeline selector| Recall timeline selection |
| <C-'> | `DeleteMark` | command | Delete a stored mark |

## Some ideas to start with

```
Expand Down Expand Up @@ -143,7 +163,7 @@ internal/definitions/bindings.lua -> add or customise key bindings
internal/definitions/config.lua -> change GUI settings
```

## Contributing
## Development
### Running tests

For running tests locally you'd need some Linux distribution with X11 and `xdotool`.
Expand All @@ -164,24 +184,22 @@ emulated with Xvfb.

### Writing tests

Each test is just a sequence of keys you press to achieve some result. One notable exception is
a hotkey or a special key like "Return" (Enter) or "Backspace". In that case, prefix line with
`&` and enter the key combination after, like `&Return`.
Each test is just a sequence of keys you press to achieve some result. One
notable exception is a hotkey or a special key like "Return" (Enter) or
"Backspace". In that case, prefix line with `&` and enter the key combination
after, like `&Return`.

Project files documentation: https://github.com/ReaTeam/Doc/blob/master/State%20Chunk%20Definitions
Project files documentation:
https://github.com/ReaTeam/Doc/blob/master/State%20Chunk%20Definitions

### Reporting performance issues

1. Download "Lua profiler" from ReaTeam Scripts and "ReaImGui" from ReaTeam Extensions via
ReaPack.
1. Download "Lua profiler" from ReaTeam Scripts and "ReaImGui" from ReaTeam
Extensions via ReaPack.
2. Change "profile" to "true" in internal/definitions/config.lua
3. In Reaper, click Actions > Running script > rk.lua > Terminate instances. There may be
no "Running script", then just skip this step.
3. In Reaper, click Actions > Running script > rk.lua > Terminate instances.
There may be no "Running script", then just skip this step.
4. Press any key. A profiler window will open.
5. Click "Acquisition > Stop" in the profiler window after you're done
6. Click "Copy to clipboard". Paste in a GitHub issue.
7. When you're done, change "profile" back to false and repeat (3)

## Further Information

Check out the [documentation](https://gwatcha.github.io/reaper-keys) to learn more.
1 change: 0 additions & 1 deletion docs/README.md

This file was deleted.

4 changes: 0 additions & 4 deletions docs/_config.yml

This file was deleted.

33 changes: 0 additions & 33 deletions docs/action_composition.md

This file was deleted.

20 changes: 0 additions & 20 deletions docs/configuration.md

This file was deleted.

63 changes: 0 additions & 63 deletions docs/configuration/actions.md

This file was deleted.

113 changes: 0 additions & 113 deletions docs/configuration/advanced.md

This file was deleted.

Loading