Why do I need this device instead of mechanical custom keypads?

I wanted to work with Blender 3D on my 13" laptop. Blender 3D as many other professional softwares such as Krita and Gimp use a lot of keystrokes to run different commands. Some of them use the Numpad which many laptops have not.

While is possible to use an external numpad, you still need to memorize the keyboard shortcuts.

On top of that the numpad design is natural for entering numbers not the functionality used in these programs.

I wanted to simplify the method to load different layouts and shortcuts. I used the Arduino IDE  to change the purpose of the device by just adding 2 files to the ESP32 LittleFS filesystem. One file is the 480x320 PNG file to be loaded in the screen. The second file is a CSV file with the keystrokes.

Instructions

In the data directory edit the  config.ini file. Write in a single line the prefix name of the files set to load. 

Add a PNG and its correspondent CSV file with the same prefix name.

 PNG file size should be 320x480 .

Each line in the CSV file defines a button  and its action. First we provide the x, y, width and height of the button (pixels)

Then we have label which I added as I am interested in the future support simple layouts which is drawn using the CSV file only. This field should be double quoted.

Code. This field has the character to be typed.

Mod. Is the modifier field used to indicate when to use Shift, CTRL or META key modifiers together with the key code.

Example 

x,y,w,h,label,code,mod

1, 81, 78, 78,"z",z,NONE

81, 81, 78, 78,"+",KEY_NUM_PLUS,NONE 

161,81, 78, 78, "-", KEY_NUM_MINUS,NONE

241, 81, 78, 78, "7", KEY_NUM_7,NONE

1, 161, 78, 78, "/", KEY_NUM_SLASH,NONE

81, 161, 78, 78, "8", KEY_NUM_8,NONE

161, 161, 78, 78, "9", KEY_NUM_9,NONE

241, 161, 78, 158, "1", KEY_NUM_1,NONE

1, 241, 78, 78, "4", KEY_NUM_4,NONE

81, 241, 78, 78, "5", KEY_NUM_5,NONE

161, 241, 78, 78, "6", KEY_NUM_6,NONE

1, 321, 78, 78, "*", KEY_NUM_0, CTRL_MOD  + ALT_MOD

81, 321, 78, 78, "2", KEY_NUM_2,NONE

161, 321, 78, 78, "*", KEY_NUM_0, CTRL_MOD

241, 321, 78, 158, "3", KEY_NUM_3,NONE

1, 401, 158, 78, "0", KEY_NUM_0,NONE

161, 401, 78, 78, ".", KEY_NUM_PERIOD,NONE