agentscript
Version:
AgentScript Model in Model/View architecture
66 lines (44 loc) • 2.21 kB
Markdown
<!-- # AnimatorControl -->
One of the simplest controls is the KeyboardControl. It also is easy to setup.
We'll use the pheromone example, adding keyboard controls
## Keyboard
The input to the Keyboard control is an array of objects, each with a key and cmd value. It looks like:
```javascript
const keyCommands = [
{ key: 't', cmd: () => anim.toggle() },
{ key: 'o', cmd: () => anim.once() },
{ key: 'd', cmd: () => view.downloadCanvas() },
]
const keyboard = new Keyboard(keyCommands).start()
```
In this case, we have three keyboard actions:
The `t key` will toggle the animator .. i.e. if stopped, it'll start, otherwise it'll stop.
The `o key` will call the animator "once" function.
The `d key` will download the view's image.
## Modifiers
You can create a character by a modifier key, primarily Shift and Alt/Option.
For alphabetic keys, Shift simply is the upper case of the key. Thus Shift-a is simply A. For non-alphabetic keys, like Shift-4, the key value is shown on the keyboard, in this case $.
The Alt/Option key differs in that it gives Unicode characters. For example:
Alt-a is å, and Alt-Shift-a, or Alt-A, is Å.
To use these. simply type them in an editor, terminal, or browser developer tools area to discover the character they correspond to.
## Examples
Here are several more examples:
```javascript
const keyCommands = [
// These use the default modifier key, in this case the 'alt' key
{ key: 'q', cmd: () => console.log('q') },
{ key: '2', cmd: () => console.log('2') },
{ key: 'F2', cmd: () => console.log('F2') },
{ key: 'ArrowDown', cmd: () => console.log('ArrowDown') },
{ key: 'Escape', cmd: () => console.log('Escape') },
{ key: 'å', cmd: () => console.log('Alt-a') },
{ key: 'Å', cmd: () => console.log('Alt-Shift-a') },
{ key: '$', cmd: () => console.log('Shift-4') },
]
const keyboard = new Keyboard(keyCommands).start()
```
Finally, there are two methods to start/stop the keyboard.
- keyboard.start()
- keyboard.stop()
## Demo
Here's a demo with several keyboard commands: [mvc/helloKeys.html](https://code.agentscript.org/mvc/helloKeys.html). The key commands are shown to the right of the model.