wvkbd/config.h
2021-10-19 23:12:01 -07:00

275 lines
7.2 KiB
C

/* constants */
/* how tall the keyboard should be */
#define KBD_PIXEL_HEIGHT 240
/* if your layout leaves an empty margin, increase this to fix it */
#define KBD_PIXEL_OVERSCAN_WIDTH 5
/* Maximum number of keys */
#define KBD_POINTS 66
/* spacing between keys */
#define KBD_KEY_BORDER 2
#include "keyboard.h"
/* font (see `man fonts-conf` for instructions) */
static const char *fc_font_pattern =
"FiraMono Nerd Font:size=16:antialias=true:hinting=true";
/* layout declarations */
enum layout_names {
Basic = 0,
Special,
Simple,
NumLayouts,
};
static struct key keys_basic[], keys_special[], keys_simple[];
static struct layout layouts[NumLayouts] = {
[Basic] = {keys_basic},
[Special] = {keys_special},
[Simple] = {keys_simple},
};
/* keyboard settings */
static struct kbd keyboard = {
/* default layout */
.layout = &layouts[Basic],
.scheme =
{
/* colors */
.bg = {.bgra = {15, 15, 15, 225}},
.fg = {.bgra = {45, 45, 45, 225}},
.high = {.bgra = {100, 100, 100, 225}},
.text = {.color = UINT32_MAX},
},
};
/* key layouts
*
* define keys like:
*
* `{
* "label",
* "SHIFT_LABEL",
* 1,
* [Code, Mod, Layout, EndRow, Last],
* [KEY_CODE, Modifier],
* [&layout]
* },`
*
* - label: normal label for key
*
* - shift_label: label for key in shifted (uppercase) layout
*
* - width: column width of key
*
* - type: what kind of action this key peforms (emit keycode, toggle modifier,
* switch layout, or end the layout)
*
* - code: key scancode or modifier name (see
* `/usr/include/linux/input-event-codes.h` for scancode names, and
* `keyboard.h` for modifiers)
*
* - layout: layout to switch to when key is pressed
*/
static struct key keys_basic[] = {
{"Esc", "Esc", 1.0, Code, KEY_ESC},
{"Tab", "Tab", 1.0, Code, KEY_TAB},
{"", "", 1.0, Code, KEY_UP},
{"", "", 1.0, Code, KEY_DOWN},
{"", "", 1.0, Code, KEY_LEFT},
{"", "", 1.0, Code, KEY_RIGHT},
{"'", "\"", 1.0, Code, KEY_APOSTROPHE},
{"/", "?", 1.0, Code, KEY_SLASH},
{";", ":", 1.0, Code, KEY_SEMICOLON},
{"`", "~", 1.0, Code, KEY_GRAVE},
{"", "", 0.0, EndRow},
{"1", "!", 1.0, Code, KEY_1},
{"2", "@", 1.0, Code, KEY_2},
{"3", "#", 1.0, Code, KEY_3},
{"4", "$", 1.0, Code, KEY_4},
{"5", "%", 1.0, Code, KEY_5},
{"6", "^", 1.0, Code, KEY_6},
{"7", "&", 1.0, Code, KEY_7},
{"8", "*", 1.0, Code, KEY_8},
{"9", "(", 1.0, Code, KEY_9},
{"0", ")", 1.0, Code, KEY_0},
{"-", "_", 1.0, Code, KEY_MINUS},
{"=", "+", 1.0, Code, KEY_EQUAL},
{"", "", 0.0, EndRow},
{"", "", 0.5, Pad},
{"q", "Q", 1.0, Code, KEY_Q},
{"w", "W", 1.0, Code, KEY_W},
{"e", "E", 1.0, Code, KEY_E},
{"r", "R", 1.0, Code, KEY_R},
{"t", "T", 1.0, Code, KEY_T},
{"y", "Y", 1.0, Code, KEY_Y},
{"u", "U", 1.0, Code, KEY_U},
{"i", "I", 1.0, Code, KEY_I},
{"o", "O", 1.0, Code, KEY_O},
{"p", "P", 1.0, Code, KEY_P},
{"", "", 0.0, EndRow},
{"Ct", "Ct", 1.0, Mod, Ctrl},
{"a", "A", 1.0, Code, KEY_A},
{"s", "S", 1.0, Code, KEY_S},
{"d", "D", 1.0, Code, KEY_D},
{"f", "F", 1.0, Code, KEY_F},
{"g", "G", 1.0, Code, KEY_G},
{"h", "H", 1.0, Code, KEY_H},
{"j", "J", 1.0, Code, KEY_J},
{"k", "K", 1.0, Code, KEY_K},
{"l", "L", 1.0, Code, KEY_L},
{"", "", 0.5, Pad},
{"", "", 0.0, EndRow},
{"", "", 1.5, Mod, Shift},
{"z", "Z", 1.0, Code, KEY_Z},
{"x", "X", 1.0, Code, KEY_X},
{"c", "C", 1.0, Code, KEY_C},
{"v", "V", 1.0, Code, KEY_V},
{"b", "B", 1.0, Code, KEY_B},
{"n", "N", 1.0, Code, KEY_N},
{"m", "M", 1.0, Code, KEY_M},
{"", "", 1.5, Code, KEY_BACKSPACE},
{"", "", 0.0, EndRow},
{"Sym", "Sym", 1.0, Layout, 0, &layouts[Special]},
{"Alt", "Alt", 1.0, Mod, AltGr},
{",", "<", 1.0, Code, KEY_COMMA},
{"", "", 4.0, Code, KEY_SPACE},
{".", ">", 1.0, Code, KEY_DOT},
{"Entr", "Entr", 2.0, Code, KEY_ENTER},
/* end of layout */
{"", "", 0.0, Last},
};
static struct key keys_special[] = {
{"Esc", "Esc", 1.0, Code, KEY_ESC},
{"Tab", "Tab", 1.0, Code, KEY_TAB},
{"", "", 1.0, Code, KEY_UP},
{"", "", 1.0, Code, KEY_DOWN},
{"", "", 1.0, Code, KEY_LEFT},
{"", "", 1.0, Code, KEY_RIGHT},
{"", "", 1.0, Code, KEY_PAGEUP},
{"", "", 1.0, Code, KEY_PAGEDOWN},
{"", "", 1.0, Code, KEY_HOME},
{"", "", 1.0, Code, KEY_END},
{"", "", 0.0, EndRow},
{"1", "!", 1.0, Code, KEY_1},
{"2", "@", 1.0, Code, KEY_2},
{"3", "#", 1.0, Code, KEY_3},
{"4", "$", 1.0, Code, KEY_4},
{"5", "%", 1.0, Code, KEY_5},
{"6", "^", 1.0, Code, KEY_6},
{"7", "&", 1.0, Code, KEY_7},
{"8", "*", 1.0, Code, KEY_8},
{"9", "(", 1.0, Code, KEY_9},
{"0", ")", 1.0, Code, KEY_0},
{"", "", 0.0, EndRow},
{"", "", 1.0, Pad},
{"", "", 1.0, Pad},
{"", "", 1.0, Pad},
{"", "", 1.0, Pad},
{"", "", 1.0, Pad},
{"", "", 1.0, Pad},
{"", "", 1.0, Pad},
{"", "", 1.0, Pad},
{"", "", 1.0, Pad},
{"", "", 1.0, Pad},
{"", "", 0.0, EndRow},
{"Ct", "Ct", 2.0, Mod, Ctrl},
{"`", "~", 1.0, Code, KEY_GRAVE},
{"'", "\"", 1.0, Code, KEY_APOSTROPHE},
{"-", "_", 1.0, Code, KEY_MINUS},
{"=", "+", 1.0, Code, KEY_EQUAL},
{"[", "{", 1.0, Code, KEY_LEFTBRACE},
{"]", "}", 1.0, Code, KEY_RIGHTBRACE},
{"\\", "|", 1.0, Code, KEY_BACKSLASH},
{"Del", "Del", 1.0, Code, KEY_DELETE},
{"", "", 0.0, EndRow},
{"", "", 2.0, Mod, Shift},
{";", ":", 1.0, Code, KEY_SEMICOLON},
{"/", "?", 1.0, Code, KEY_SLASH},
{"", "", 1.0, Pad},
{"", "", 1.0, Pad},
{"", "", 1.0, Pad},
{"", "", 1.0, Pad},
{"", "", 1.0, Pad},
{"", "", 1.0, Code, KEY_BACKSPACE},
{"", "", 0.0, EndRow},
{"Abc", "Abc", 1.0, Layout, 0, &layouts[Simple]},
{"Alt", "Alt", 1.0, Mod, AltGr},
{",", "<", 1.0, Code, KEY_COMMA},
{"", "", 4.0, Code, KEY_SPACE},
{".", ">", 1.0, Code, KEY_DOT},
{"Entr", "Entr", 2.0, Code, KEY_ENTER},
/* end of layout */
{"", "", 0.0, Last},
};
static struct key keys_simple[] = {
{"", "", 0.5, Pad},
{"q", "Q", 1.0, Code, KEY_Q},
{"w", "W", 1.0, Code, KEY_W},
{"e", "E", 1.0, Code, KEY_E},
{"r", "R", 1.0, Code, KEY_R},
{"t", "T", 1.0, Code, KEY_T},
{"y", "Y", 1.0, Code, KEY_Y},
{"u", "U", 1.0, Code, KEY_U},
{"i", "I", 1.0, Code, KEY_I},
{"o", "O", 1.0, Code, KEY_O},
{"p", "P", 1.0, Code, KEY_P},
{"", "", 0.0, EndRow},
{"Ct", "Ct", 1.0, Mod, Ctrl},
{"a", "A", 1.0, Code, KEY_A},
{"s", "S", 1.0, Code, KEY_S},
{"d", "D", 1.0, Code, KEY_D},
{"f", "F", 1.0, Code, KEY_F},
{"g", "G", 1.0, Code, KEY_G},
{"h", "H", 1.0, Code, KEY_H},
{"j", "J", 1.0, Code, KEY_J},
{"k", "K", 1.0, Code, KEY_K},
{"l", "L", 1.0, Code, KEY_L},
{"", "", 0.5, Pad},
{"", "", 0.0, EndRow},
{"", "", 1.5, Mod, Shift},
{"z", "Z", 1.0, Code, KEY_Z},
{"x", "X", 1.0, Code, KEY_X},
{"c", "C", 1.0, Code, KEY_C},
{"v", "V", 1.0, Code, KEY_V},
{"b", "B", 1.0, Code, KEY_B},
{"n", "N", 1.0, Code, KEY_N},
{"m", "M", 1.0, Code, KEY_M},
{"", "", 1.5, Code, KEY_BACKSPACE},
{"", "", 0.0, EndRow},
{"Abc", "Abc", 1.0, Layout, 0, &layouts[Basic]},
{"Alt", "Alt", 1.0, Mod, AltGr},
{",", "<", 1.0, Code, KEY_COMMA},
{"", "", 4.0, Code, KEY_SPACE},
{".", ">", 1.0, Code, KEY_DOT},
{"Entr", "Entr", 2.0, Code, KEY_ENTER},
/* end of layout */
{"", "", 0.0, Last},
};