summary refs log tree commit diff
path: root/config.h
diff options
context:
space:
mode:
authorJohn Sullivan <jsullivan@csumb.edu>2020-09-11 01:25:28 -0700
committerJohn Sullivan <jsullivan@csumb.edu>2020-09-13 04:44:15 -0700
commit470046a68cb21c69635d48d424b64b76148dac1c (patch)
treeb0bf94141b1e54489332641c503d17ff5845f4a5 /config.h
downloadsuggpicker-470046a68cb21c69635d48d424b64b76148dac1c.tar.gz
Init
Diffstat (limited to 'config.h')
-rw-r--r--config.h165
1 files changed, 165 insertions, 0 deletions
diff --git a/config.h b/config.h
new file mode 100644
index 0000000..b460212
--- /dev/null
+++ b/config.h
@@ -0,0 +1,165 @@
+/* constants */
+
+/* how tall the keyboard should be */
+#define KBD_PIXEL_HEIGHT 155
+
+/* if your layout leaves an empty margin, increase this to fix it */
+#define KBD_PIXEL_OVERSCAN_WIDTH 0
+
+/* rows for each layout */
+#define KBD_ROWS 4
+
+/* columns for each layout (maximum keys per row) */
+#define KBD_COLS 10
+
+/* spacing between keys */
+#define KBD_KEY_BORDER 1
+
+#include "keyboard.h"
+
+/* font (see `man fonts-conf` for instructions) */
+static const char *fc_font_pattern =
+  "monospace:size=14:antialias=true:hinting=true";
+
+/* layout declarations */
+enum layout_names {
+	Basic = 0,
+	Special,
+	NumLayouts,
+};
+
+static struct key keys_basic[], keys_special[];
+
+static struct layout layouts[NumLayouts] = {
+  [Basic] = {keys_basic},
+  [Special] = {keys_special},
+};
+
+/* 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, 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[] = {
+  {"q", "Q", 1, Code, KEY_Q},
+  {"w", "W", 1, Code, KEY_W},
+  {"e", "E", 1, Code, KEY_E},
+  {"r", "R", 1, Code, KEY_R},
+  {"t", "T", 1, Code, KEY_T},
+  {"y", "Y", 1, Code, KEY_Y},
+  {"u", "U", 1, Code, KEY_U},
+  {"i", "I", 1, Code, KEY_I},
+  {"o", "O", 1, Code, KEY_O},
+  {"p", "P", 1, Code, KEY_P},
+
+  {"a", "A", 1, Code, KEY_A},
+  {"s", "S", 1, Code, KEY_S},
+  {"d", "D", 1, Code, KEY_D},
+  {"f", "F", 1, Code, KEY_F},
+  {"g", "G", 1, Code, KEY_G},
+  {"h", "H", 1, Code, KEY_H},
+  {"j", "J", 1, Code, KEY_J},
+  {"k", "K", 1, Code, KEY_K},
+  {"l", "L", 1, Code, KEY_L},
+  {";", ":", 1, Code, KEY_SEMICOLON},
+
+  {"z", "Z", 1, Code, KEY_Z},
+  {"x", "X", 1, Code, KEY_X},
+  {"c", "C", 1, Code, KEY_C},
+  {"v", "V", 1, Code, KEY_V},
+  {"b", "B", 1, Code, KEY_B},
+  {"n", "N", 1, Code, KEY_N},
+  {"m", "M", 1, Code, KEY_M},
+  {"Tab", "Tab", 1, Code, KEY_TAB},
+  {"Bk", "Bk", 1, Code, KEY_BACKSPACE},
+  {"Ret", "Ret", 1, Code, KEY_ENTER},
+
+  {"Sft", "Sft", 1, Mod, Shift},
+  {"Sp", "Sp", 1, Mod, Super},
+  {"Alt", "Alt", 1, Mod, AltGr},
+  {"", "", 3, Code, KEY_SPACE},
+  {"Esc", "Esc", 1, Code, KEY_ESC},
+  {"Ctl", "Ctl", 1, Mod, Ctrl},
+  {"Sm", "Sm", 2, Layout, 0, &layouts[Special]},
+
+  /* end of layout */
+  {"", "", 0, Last},
+};
+
+static struct key keys_special[] = {
+  {"1", "!", 1, Code, KEY_1},
+  {"2", "@", 1, Code, KEY_2},
+  {"3", "#", 1, Code, KEY_3},
+  {"4", "$", 1, Code, KEY_4},
+  {"5", "%", 1, Code, KEY_5},
+  {"6", "^", 1, Code, KEY_6},
+  {"7", "&", 1, Code, KEY_7},
+  {"8", "*", 1, Code, KEY_8},
+  {"9", "(", 1, Code, KEY_9},
+  {"0", ")", 1, Code, KEY_0},
+
+  {"'", "\"", 1, Code, KEY_APOSTROPHE},
+  {"`", "~", 1, Code, KEY_GRAVE},
+  {"-", "_", 1, Code, KEY_MINUS},
+  {"=", "+", 1, Code, KEY_EQUAL},
+  {"[", "{", 1, Code, KEY_LEFTBRACE},
+  {"]", "}", 1, Code, KEY_RIGHTBRACE},
+  {",", "<", 1, Code, KEY_COMMA},
+  {".", ">", 1, Code, KEY_DOT},
+  {"/", "?", 1, Code, KEY_SLASH},
+  {"\\", "|", 1, Code, KEY_BACKSLASH},
+
+  {"↑", "↑", 1, Code, KEY_UP},
+  {"↓", "↓", 1, Code, KEY_DOWN},
+  {"←", "←", 1, Code, KEY_LEFT},
+  {"→", "→", 1, Code, KEY_RIGHT},
+  {"Sp", "Sp", 1, Mod, Super},
+  {"Alt", "Alt", 1, Mod, AltGr},
+  {"Ctl", "Ctl", 1, Mod, Ctrl},
+  {"Sft", "Sft", 1, Mod, Shift},
+
+  {"Ret", "Ret", 1, Code, KEY_ENTER},
+  {"Bk", "Bk", 1, Code, KEY_BACKSPACE},
+  {"", "", 3, Code, KEY_SPACE},
+  {"Bsc", "Bsc", 2, Layout, 0, &layouts[Basic]},
+
+  /* end of layout */
+  {"", "", 0, Last},
+};