top of page
  • Writer's pictureMatt

AppSheet Macro Keyboard

Updated: Nov 20, 2022

Adafruit, AppSheet, Macropad, Macros


Make your AppSheet formula building easier, and build yourself an macropad full of AppSheet formulas!

  • First-Order Retrievable Formulas!

  • It's like you've got a permanent set of things on your clipboard!

 
  • Adafruit sells the hardware here ($50)

  • You can download the customized version of the base macropad software below:

MultiTech's AppSheet Macro Keyboard
.zip
Download ZIP • 109KB
 

Inside you'll find the following files:

  1. lib [FOLDER]

  2. macros [FOLDER]

  3. boot_out.txt

  4. bootex.log

  5. cody.py

  6. Keycode Documentation.text

  7. matrix.scr

  8. Read Me.text

 

1. lib [FOLDER]

  • This folder holds various libraries necessary for the opperation of the base macropad code

2. macros [FOLDER]

  • This folder holds the various "pages" that you can switch to - Each page contains a list of each of the macros available on that page - It's inside here that you can modify the actions of the individual macros

3. boot_out.txt

  • System file

4. BOOTEX.LOG

  • System file

5. code.py

  • This is the core code that's running on the macropad

  • It contains the initialization parameters

  • As well as the primary loop that's constantly running

  • The code in this file has been heavily modified from it's original

6. Keycode Documentation.txt

  • This file is an excerpt from the official documentation for the macropad - URL to the actual site can be found inside the file - Here's the link as well

  • It contains a list of all the primary keycodes you can use, when programming your own custom macro functions

7. matrix.scr

  • This is a matrix style screen saver (the green code raining down the screen)

This is included as a bonus, because it's freaking awesome!


8. READ ME.txt

  • This is a file that I put together, which describes how to use the system

  • I'll copy it's contents below

 

-------------------------------------------------------------------------------------

----------------| AppSheet Macro Keyboard |-------------------------------------

-------------------------------------------------------------------------------------

----------------| by MultiTech Visions |------------------------------------------

-------------------------------------------------------------------------------------


TURN-KNOB FUNCTIONALITY


PRESS - Sleep Mode

This will turn on/off the screen and the key LEDs


TURN - system volume control

This will adjust the volume on your computer


TOP ROW BUTTON FUNCTIONALITY


Page Navigation

These buttons will navigate between the pages

Contains the following (Pages)

  1. Off

  2. DeepLinks

  3. Logic

  4. Home

  5. Lists

  6. Text

  7. CurrentUser

  8. Context

  9. OBS Control

-------------------------------------------------------------------------------------

----------------| BASIC KEY LAYOUT |-------------------------------------------

-------------------------------------------------------------------------------------


---------------------

| | | | This top row is standard across most screens

| <<< | 🏘️ | >>> |

| | | |

---------------------

| | | |

| 1 | 2 | 3 |

| | | |

---------------------

| | | |

| 4 | 5 | 6 |

| | | |

---------------------

| | | |

|Clear | 7 | ) |

| | | | The bottom row (((corner buttons)))

--------------------- are also standard across most screens


BUTTONS

  • TOP ROW - Page Navigation

    • These buttons control the navigation of the pages

      • LEFT - Left 1 Page

      • CENTER - Return (to previous screen) / Home (return to Home screen)

      • RIGHT - Right 1 Page


  • BOTTOM

    • The bottom corner buttons are reserved, serving the same purpose on each screen

      • LEFT - Clear (Select All + Delete)

        • Mini nuke button, to clear the field of all it's contents

      • CENTER - (((Depends on page)))

      • RIGHT - ")" (a single closing parenthesis)

        • Since it's used so often, having it a single keystroke away greatly speeds up the process.


-------------------------------------------------------------------------------------

----------------| Page Overviews |---------------------------------------------------

-------------------------------------------------------------------------------------


The following sections contain an overview of each of the pages included in the keyboard.

-------------------------------------------| HOME

DEFAULT SCREEN

When you turn on the keyboard, this is the first screen

BASIC OVERVIEW

The idea with this page is to hold the (((MOST COMMON))) "formula-bits" used by me (this could be different for yourself).

The white keys contain similar elements: the second row uses what's on your clipboard to automatically finish the formula.


Special

"_____" will be replaced with whatever is on your clipboard

​--------------------- | | | | | <<< | 🏘️ | >>> | | | | | --------------------- | | | | | 1 | 2 | 3 | | | | | --------------------- | | | | | 4 | 5 | 6 | | | | | --------------------- | | | | |Clear| 7 | ) | | | | | ---------------------





  1. Context("ViewType") = "Form"

  2. IsBlank(

  3. IsNotBlank(

  4. Context("ViewType") <> "Form"

  5. IsBlank(["_____"])

  6. 6 = IsNotBlank(["_____"])

  7. if(Context("ViewType") = "Form", IsBlank([_this]), true)


-------------------------------------------| DeepLinks

BASIC OVERVIEW

Helpful deeplink templates, with placeholders for the parts you need.


Special

"_____" will be replaced with whatever is on your clipboard

​--------------------- | | | | | <<< | 🏘️ | >>> | | | | | ---------------------

| | | | | 1 | 2 | 3 | | | | | --------------------- | | | | | 4 | 5 | 6 | | | | | --------------------- | | | | |Clear | 7 | ) | | | | | ---------------------





  1. LinkToView("_____")

  2. LinkToForm("_____", "COLUMN_TO_SET", [VALUE_TO_SET_IT_TO])

  3. LinkToRow([ROW_ID_HERE], "_____")

  4. LinkToView("VIEW_NAME_HERE")

  5. LinkToForm("FORM_NAME_HERE", "COLUMN_TO_SET", [VALUE_TO_SET_IT_TO])

  6. LinkToRow([ROW_ID_HERE], "VIEW_NAME_HERE")

  7. &"&at="&(NOW()+1)

-------------------------------------------| Logic

BASIC OVERVIEW

Contains the starting bits for logic statements

​--------------------- | | | | | <<< | 🏘️ | >>> | | | | | --------------------- | | | | | 1 | 2 | 3 | | | | | --------------------- | | | | | 4 | 5 | 6 | | | | | --------------------- | | | | |Clear| 7 | ) | | | | | ---------------------





  1. In(

  2. And(

  3. IF(

  4. Not(

  5. Or(

  6. IFs(

  7. Switch(

-------------------------------------------| Lists

BASIC OVERVIEW

Holds formulas that work on lists

​--------------------- | | | | | <<< | 🏘️ | >>> | | | | | --------------------- | | | | | 1 | 2 | 3 | | | | | --------------------- | | | | | 4 | 5 | 6 | | | | | --------------------- | | | | |Clear| 7 | ) | | | | | ---------------------





  1. ​OrderBy(

  2. Select(

  3. Sort(

  4. Index(

  5. List(

  6. Top(

  7. Intersect(

-------------------------------------------| Text

BASIC OVERVIEW

Holds the text-based formulas

​--------------------- | | | | | <<< | 🏘️ | >>> | | | | | --------------------- | | | | | 1 | 2 | 3 | | | | | --------------------- | | | | | 4 | 5 | 6 | | | | | --------------------- | | | | |Clear| 7 | ) | | | | | ---------------------

  1. ​Concatenate(

  2. Split(

  3. Text(

  4. Left(

  5. Substitute(

  6. Right(

  7. Find(

-------------------------------------------| CurrentUser

BASIC OVERVIEW

Holds a bunch of the Current_User stuff

​--------------------- | | | | | <<< | 🏘️ | >>> | | | | | --------------------- | | | | | 1 | 2 | 3 | | | | | --------------------- | | | | | 4 | 5 | 6 | | | | | --------------------- | | | | |Clear| 7 | ) | | | | | ---------------------






  1. Index(Current_User[UserID], 1)

  2. Index(Current_User[User_Email], 1)

  3. Index(Current_User[User_Role], 1)

  4. Index(Current_User[User_Role], 1) = "Admin"

  5. Index(Current_User[User_Role], 1) <> "User"

  6. Index(Current_User[User_Role], 1) = "User"

  7. IN(Index(Current_User[User_Role], 1), LIST("Admin", "Dev"))


-------------------------------------------| Context

BASIC OVERVIEW

Contains a bunch of the different CONTEXT() parameter options

​--------------------- | | | | | <<< | 🏘️ | >>> | | | | | --------------------- | | | | | 1 | 2 | 3 | | | | | --------------------- | | | | | 4 | 5 | 6 | | | | | --------------------- | | | | |Clear| 7 | ) | | | | | ---------------------






  1. Context("View")

  2. Context("Device")

  3. Context("Host")

  4. Context("ViewType")

  5. Context("Table")

  6. Context("AppName")

  7. ((((nothing))))

-------------------------------------------| OBS Control

BASIC OVERVIEW

Basically to provide a bunch of higher-number F-keys, so I can trigger various things in OBS

​--------------------- | | | | | REC | 1️ | | | | | | --------------------- | | | | |Pause| 2 | 3 | | | | | --------------------- | | | | | 4 | 5 | 6 | | | | | --------------------- | | | | | 7 | 8 | 9 | | | | | ---------------------


REC = F14

1 = F20

{blank} = (((nothing)))

Pause = F15

3 = F19

3 = F24

4 = F21

5 = F22

6 = F23

7 = F16

8 = F17

9 = F18





-------------------------------------------------------------------------------------

----------------| PAGE TEMPLATE |----------------------------------------------

-------------------------------------------------------------------------------------


BASIC OVERVIEW

INSERT_OVERVIEW_HERE

--------------------- PAGE/SCREEN

| | | | -----------------------------------

| <<< | 🏘️ | >>> | | PAGE_NAME_HERE |

| | | | -----------------------------------

---------------------

| | | | 1 =

| 1 | 2 | 3 | 2 =

| | | | 3 =

---------------------

| | | | 4 =

| 4 | 5 | 6 | 5 =

| | | | 6 =

---------------------

| | | |

|Clear| 7 | ) | 7 =

| | | |

---------------------


 

116 views0 comments
bottom of page