From 77d6c44b3474c679a2651815b404e97f2e0e09b9 Mon Sep 17 00:00:00 2001 From: rocknix Date: Fri, 25 Jul 2025 22:03:40 +0000 Subject: [PATCH] Add Rocknix Touchscreen keyboard to touchscreen devices --- .../rocknix-touchscreen-keyboard/package.mk | 22 + .../patches/000-remove-scdoc-dependency.patch | 46 + .../patches/001-fix-special-chars.patch | 857 ++++++++++++++++++ .../sources/rocknix-touchscreen-keyboard | 12 + .../system.d/touchkeyboard.service | 14 + .../platforms/AMD64/065-Touchscreen-events | 12 + .../platforms/RK3399/065-Touchscreen-events | 12 + .../platforms/RK3588/065-Touchscreen-events | 12 + .../platforms/SDM845/065-Touchscreen-events | 12 + .../platforms/SM8250/065-Touchscreen-events | 12 + .../platforms/SM8550/065-Touchscreen-events | 12 + .../system-utils/sources/scripts/input_sense | 21 +- .../packages/virtual/gamesupport/package.mk | 2 +- 13 files changed, 1044 insertions(+), 2 deletions(-) create mode 100644 projects/ROCKNIX/packages/apps/rocknix-touchscreen-keyboard/package.mk create mode 100644 projects/ROCKNIX/packages/apps/rocknix-touchscreen-keyboard/patches/000-remove-scdoc-dependency.patch create mode 100644 projects/ROCKNIX/packages/apps/rocknix-touchscreen-keyboard/patches/001-fix-special-chars.patch create mode 100644 projects/ROCKNIX/packages/apps/rocknix-touchscreen-keyboard/sources/rocknix-touchscreen-keyboard create mode 100644 projects/ROCKNIX/packages/apps/rocknix-touchscreen-keyboard/system.d/touchkeyboard.service create mode 100644 projects/ROCKNIX/packages/hardware/quirks/platforms/AMD64/065-Touchscreen-events create mode 100644 projects/ROCKNIX/packages/hardware/quirks/platforms/RK3399/065-Touchscreen-events create mode 100644 projects/ROCKNIX/packages/hardware/quirks/platforms/RK3588/065-Touchscreen-events create mode 100644 projects/ROCKNIX/packages/hardware/quirks/platforms/SDM845/065-Touchscreen-events create mode 100644 projects/ROCKNIX/packages/hardware/quirks/platforms/SM8250/065-Touchscreen-events create mode 100644 projects/ROCKNIX/packages/hardware/quirks/platforms/SM8550/065-Touchscreen-events diff --git a/projects/ROCKNIX/packages/apps/rocknix-touchscreen-keyboard/package.mk b/projects/ROCKNIX/packages/apps/rocknix-touchscreen-keyboard/package.mk new file mode 100644 index 0000000000..9341d2a962 --- /dev/null +++ b/projects/ROCKNIX/packages/apps/rocknix-touchscreen-keyboard/package.mk @@ -0,0 +1,22 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (C) 2025-present ROCKNIX (https://github.com/ROCKNIX) + +PKG_NAME="rocknix-touchscreen-keyboard" +PKG_VERSION="v0.17" +PKG_LICENSE="GPLv3" +PKG_SITE="https://github.com/jjsullivan5196/wvkbd" +PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" +PKG_LONGDESC="wvkbd - On-screen keyboard for wlroots that sucks less" +PKG_DEPENDS_TARGET="toolchain wayland sway pango libxkbcommon cairo" +PKG_TOOLCHAIN="make" + +makeinstall_target() { + mkdir -p ${INSTALL}/usr/bin + cp -rf ${PKG_BUILD}/wvkbd-mobintl ${INSTALL}/usr/bin + cp -rf ${PKG_DIR}/sources/* ${INSTALL}/usr/bin + chmod 0755 ${INSTALL}/usr/bin/* +} + +post_install() { + enable_service touchkeyboard.service +} diff --git a/projects/ROCKNIX/packages/apps/rocknix-touchscreen-keyboard/patches/000-remove-scdoc-dependency.patch b/projects/ROCKNIX/packages/apps/rocknix-touchscreen-keyboard/patches/000-remove-scdoc-dependency.patch new file mode 100644 index 0000000000..d69c2fd02e --- /dev/null +++ b/projects/ROCKNIX/packages/apps/rocknix-touchscreen-keyboard/patches/000-remove-scdoc-dependency.patch @@ -0,0 +1,46 @@ +diff --git a/Makefile b/Makefile +index db17991..bbdc67e 100644 +--- a/Makefile ++++ b/Makefile +@@ -3,7 +3,6 @@ include config.mk + NAME=wvkbd + BIN=${NAME}-${LAYOUT} + SRC=. +-MAN1 = ${NAME}.1 + + PKGS = wayland-client xkbcommon pangocairo + +@@ -21,12 +20,9 @@ HDRS = $(WAYLAND_HEADERS:.xml=-client-protocol.h) + WAYLAND_SRC = $(HDRS:.h=.c) + SOURCES = $(WVKBD_SOURCES) $(WAYLAND_SRC) + +-SCDOC=scdoc +-DOCS = wvkbd.1 +- + OBJECTS = $(SOURCES:.c=.o) + +-all: ${BIN} ${DOCS} ++all: ${BIN} + + config.h: + cp config.def.h config.h +@@ -43,18 +39,12 @@ wvkbd-${LAYOUT}: config.h $(OBJECTS) layout.${LAYOUT}.h + $(CC) -o wvkbd-${LAYOUT} $(OBJECTS) $(LDFLAGS) + + clean: +- rm -f $(OBJECTS) $(HDRS) $(WAYLAND_SRC) ${BIN} ${DOCS} ++ rm -f $(OBJECTS) $(HDRS) $(WAYLAND_SRC) ${BIN} + + format: + clang-format -i $(WVKBD_SOURCES) $(WVKBD_HEADERS) + +-%: %.scd +- $(SCDOC) < $< > $@ +- + install: all + mkdir -p ${DESTDIR}${PREFIX}/bin + cp -f ${NAME}-${LAYOUT} ${DESTDIR}${PREFIX}/bin + chmod 755 ${DESTDIR}${PREFIX}/bin/${NAME}-${LAYOUT} +- mkdir -p "${DESTDIR}${MANPREFIX}/man1" +- sed "s/VERSION/${VERSION}/g" < ${MAN1} > ${DESTDIR}${MANPREFIX}/man1/${MAN1} +- chmod 644 ${DESTDIR}${MANPREFIX}/man1/${MAN1} diff --git a/projects/ROCKNIX/packages/apps/rocknix-touchscreen-keyboard/patches/001-fix-special-chars.patch b/projects/ROCKNIX/packages/apps/rocknix-touchscreen-keyboard/patches/001-fix-special-chars.patch new file mode 100644 index 0000000000..ae7babba55 --- /dev/null +++ b/projects/ROCKNIX/packages/apps/rocknix-touchscreen-keyboard/patches/001-fix-special-chars.patch @@ -0,0 +1,857 @@ +diff --git a/layout.mobintl.h b/layout.mobintl.h +index 913f392..2130279 100644 +--- a/layout.mobintl.h ++++ b/layout.mobintl.h +@@ -22,7 +22,6 @@ enum layout_id { + Greek, + Georgian, + Hebrew, +- Emoji, + Nav, + Landscape, + LandscapeSpecial, +@@ -70,7 +69,7 @@ enum layout_id { + + static struct key keys_full[], keys_full_wide[], keys_special[], keys_specialpad[], keys_simple[], + keys_cyrillic[], keys_arabic[], keys_persian[], keys_georgian[], keys_greek[], keys_hebrew[], +- keys_emoji[], keys_nav[], keys_landscape[], keys_landscape_special[], keys_compose_a[], ++ keys_nav[], keys_landscape[], keys_landscape_special[], keys_compose_a[], + keys_compose_e[], keys_compose_y[], keys_compose_u[], keys_compose_i[], + keys_compose_o[], keys_compose_w[], keys_compose_r[], keys_compose_t[], + keys_compose_p[], keys_compose_s[], keys_compose_d[], keys_compose_f[], +@@ -98,7 +97,6 @@ static struct layout layouts[NumLayouts] = { + [Greek] = {keys_greek, "greek", "greek", true}, + [Georgian] = {keys_georgian, "georgian", "georgian", true}, + [Hebrew] = {keys_hebrew, "hebrew", "hebrew", true}, +- [Emoji] = {keys_emoji, "latin", "emoji", false}, + [Nav] = {keys_nav, "latin", "nav", false}, + [Landscape] = {keys_landscape, "latin", "landscape", true}, + [LandscapeSpecial] = {keys_landscape_special, "latin", "landscapespecial", true}, +@@ -197,7 +195,6 @@ static struct key keys_full[] = { + {"0", ")", 1.0, Code, KEY_0, &layouts[ComposeBracket]}, + {"", "", 0.0, EndRow}, + +- {"q", "Q", 1.0, Code, KEY_Q, &layouts[Emoji]}, + {"w", "W", 1.0, Code, KEY_W, &layouts[ComposeW]}, + {"e", "E", 1.0, Code, KEY_E, &layouts[ComposeE]}, + {"r", "R", 1.0, Code, KEY_R, &layouts[ComposeR]}, +@@ -222,7 +219,7 @@ static struct key keys_full[] = { + {"", "", 0.5, Pad}, + {"", "", 0.0, EndRow}, + +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"z", "Z", 1.0, Code, KEY_Z, &layouts[ComposeZ]}, + {"x", "X", 1.0, Code, KEY_X, &layouts[ComposeX]}, + {"c", "C", 1.0, Code, KEY_C, &layouts[ComposeC]}, +@@ -230,10 +227,10 @@ static struct key keys_full[] = { + {"b", "B", 1.0, Code, KEY_B, &layouts[ComposeB]}, + {"n", "N", 1.0, Code, KEY_N, &layouts[ComposeN]}, + {"m", "M", 1.0, Code, KEY_M, &layouts[ComposeM]}, +- {"⌫", "⌫", 1.5, Code, KEY_BACKSPACE, .scheme = 1}, ++ {"Back", "Back", 1.5, Code, KEY_BACKSPACE, .scheme = 1}, + {"", "", 0.0, EndRow}, + +- {"⌨͕", "⌨͔", 1.5, NextLayer, .scheme = 1}, ++ {"123", "123", 1.5, NextLayer, .scheme = 1}, + {"Cmp", "Cmp", 1.0, Compose, .scheme = 1}, + {",", "'", 1.0, Code, KEY_COMMA, &layouts[ComposeMath]}, + {"", "Tab", 4.0, Code, KEY_SPACE}, +@@ -271,7 +268,6 @@ static struct key keys_full_wide[] = { + {"=", "+", 1.0, Code, KEY_EQUAL, &layouts[ComposeMath] }, + {"", "", 0.0, EndRow}, + +- {"q", "Q", 1.0, Code, KEY_Q, &layouts[Emoji]}, + {"w", "W", 1.0, Code, KEY_W, &layouts[ComposeW]}, + {"e", "E", 1.0, Code, KEY_E, &layouts[ComposeE]}, + {"r", "R", 1.0, Code, KEY_R, &layouts[ComposeR]}, +@@ -296,7 +292,7 @@ static struct key keys_full_wide[] = { + {"", "", 0.5, Pad}, + {"", "", 0.0, EndRow}, + +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"z", "Z", 1.0, Code, KEY_Z, &layouts[ComposeZ]}, + {"x", "X", 1.0, Code, KEY_X, &layouts[ComposeX]}, + {"c", "C", 1.0, Code, KEY_C, &layouts[ComposeC]}, +@@ -304,10 +300,10 @@ static struct key keys_full_wide[] = { + {"b", "B", 1.0, Code, KEY_B, &layouts[ComposeB]}, + {"n", "N", 1.0, Code, KEY_N, &layouts[ComposeN]}, + {"m", "M", 1.0, Code, KEY_M, &layouts[ComposeM]}, +- {"⌫", "⌫", 1.5, Code, KEY_BACKSPACE, .scheme = 1}, ++ {"Back", "Back", 1.5, Code, KEY_BACKSPACE, .scheme = 1}, + {"", "", 0.0, EndRow}, + +- {"⌨͕", "⌨͔", 1.5, NextLayer, .scheme = 1}, ++ {"123", "123", 1.5, NextLayer, .scheme = 1}, + {"Cmp", "Cmp", 1.0, Compose, .scheme = 1}, + {",", "'", 1.0, Code, KEY_COMMA, &layouts[ComposeMath]}, + {"", "Tab", 4.0, Code, KEY_SPACE}, +@@ -325,10 +321,10 @@ static struct key keys_special[] = { + {"↓", "↓", 1.0, Code, KEY_DOWN, .scheme = 1}, + {"←", "←", 1.0, Code, KEY_LEFT, .scheme = 1}, + {"→", "→", 1.0, Code, KEY_RIGHT, .scheme = 1}, +- {"⇈", "⇈", 1.0, Code, KEY_PAGEUP, .scheme = 1}, +- {"⇊", "⇊", 1.0, Code, KEY_PAGEDOWN, .scheme = 1}, +- {"⇤", "⇤", 1.0, Code, KEY_HOME, .scheme = 1}, +- {"⇥", "⇥", 1.0, Code, KEY_END, .scheme = 1}, ++ {"Up", "Up", 1.0, Code, KEY_PAGEUP, .scheme = 1}, ++ {"Down", "Down", 1.0, Code, KEY_PAGEDOWN, .scheme = 1}, ++ {"Home", "Home", 1.0, Code, KEY_HOME, .scheme = 1}, ++ {"End", "End", 1.0, Code, KEY_END, .scheme = 1}, + {"", "", 0.0, EndRow}, + + {"1", "!", 1.0, Code, KEY_1}, +@@ -355,19 +351,18 @@ static struct key keys_special[] = { + {"Del", "Del", 1.0, Code, KEY_DELETE, .scheme = 1}, + {"", "", 0.0, EndRow}, + +- {"⇧", "⇫", 2.0, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 2.0, Mod, Shift, .scheme = 1}, + {";", ":", 1.0, Code, KEY_SEMICOLON}, + {"/", ">", 1.0, Code, KEY_SLASH}, + {"<", "«", 1.0, Code, KEY_COMMA, 0, AltGr}, + {">", "»", 1.0, Code, KEY_DOT, 0, AltGr}, + {"¡", "¿", 1.0, Code, KEY_MENU}, +- {"🙂", "🙂", 1.0, Layout, 0, &layouts[Emoji]}, + {"AGr", "AGr", 1.0, Mod, AltGr, .scheme = 1}, +- {"⌫", "⌫", 1.0, Code, KEY_BACKSPACE, .scheme = 1}, ++ {"Back", "Back", 1.0, Code, KEY_BACKSPACE, .scheme = 1}, + {"", "", 0.0, EndRow}, + + {"Abc", "Abc", 1.0, BackLayer, .scheme = 1}, +- {"⌨͕", "⌨͔", 1.0, NextLayer, .scheme = 1}, ++ {"123", "123", 1.0, NextLayer, .scheme = 1}, + {",", "'", 1.0, Code, KEY_COMMA, &layouts[ComposeMath]}, + {"", "Tab", 4.0, Code, KEY_SPACE}, + {".", "?", 1.0, Code, KEY_DOT, &layouts[ComposePunctuation]}, +@@ -378,20 +373,20 @@ static struct key keys_special[] = { + }; + + static struct key keys_specialpad[] = { +- {"⎋", "⎋", 1.0, Code, KEY_ESC, .scheme = 1}, ++ {"Esc", "Esc", 1.0, Code, KEY_ESC, .scheme = 1}, + {"↑", "↑", 1.0, Code, KEY_UP, .scheme = 1}, +- {"⇈", "⇈", 1.0, Code, KEY_PAGEUP, .scheme = 1}, ++ {"Up", "Up", 1.0, Code, KEY_PAGEUP, .scheme = 1}, + {"`", "~", 1.0, Code, KEY_GRAVE}, + {"\\", "|", 1.0, Code, KEY_BACKSLASH}, + {"/", ">", 1.0, Code, KEY_SLASH}, + {"1", "!", 1.0, Code, KEY_1}, + {"2", "@", 1.0, Code, KEY_2}, + {"3", "#", 1.0, Code, KEY_3}, +- {"⌦", "⌦", 1.0, Code, KEY_DELETE, .scheme = 1}, ++ {"Del", "Del", 1.0, Code, KEY_DELETE, .scheme = 1}, + {"", "", 0.0, EndRow}, + //{"Tab", "Tab", 1.0, Code, KEY_TAB, .scheme = 1}, + {"←", "←", 1.0, Code, KEY_LEFT, .scheme = 1}, +- {"", "↹", 1.0, Code, KEY_SPACE}, ++ {"", "Space", 1.0, Code, KEY_SPACE}, + {"→", "→", 1.0, Code, KEY_RIGHT, .scheme = 1}, + {".", "?", 1.0, Code, KEY_DOT}, + {"[", "{", 1.0, Code, KEY_LEFTBRACE}, +@@ -401,25 +396,25 @@ static struct key keys_specialpad[] = { + {"6", "^", 1.0, Code, KEY_6}, + {"'", "\"", 1.0, Code, KEY_APOSTROPHE}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.0, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.0, Mod, Shift, .scheme = 1}, + {"↓", "↓", 1.0, Code, KEY_DOWN, .scheme = 1}, +- {"⇊", "⇊", 1.0, Code, KEY_PAGEDOWN, .scheme = 1}, ++ {"Down", "Down", 1.0, Code, KEY_PAGEDOWN, .scheme = 1}, + {";", ":", 1.0, Code, KEY_SEMICOLON}, + {"<", "«", 1.0, Code, KEY_COMMA, 0, AltGr}, + {">", "»", 1.0, Code, KEY_DOT, 0, AltGr}, + {"7", "&", 1.0, Code, KEY_7}, + {"8", "*", 1.0, Code, KEY_8}, + {"9", "(", 1.0, Code, KEY_9}, +- {"⌫", "⌫", 1.0, Code, KEY_BACKSPACE, .scheme = 1}, ++ {"Back", "Back", 1.0, Code, KEY_BACKSPACE, .scheme = 1}, + {"", "", 0.0, EndRow}, + +- {"⌨͕", "⌨͔", 1.0, NextLayer, .scheme = 1}, ++ {"123", "123", 1.0, NextLayer, .scheme = 1}, + {"Ctr", "Ctr", 1.0, Mod, Ctrl, .scheme = 1}, + {"Alt", "Alt", 1.0, Mod, Alt, .scheme = 1}, + {"Sup", "Sup", 1.0, Mod, Super, .scheme = 1}, + +- {"⇤", "⇤", 1.0, Code, KEY_HOME, .scheme = 1}, +- {"⇥", "⇥", 1.0, Code, KEY_END, .scheme = 1}, ++ {"Home", "Home", 1.0, Code, KEY_HOME, .scheme = 1}, ++ {"End", "End", 1.0, Code, KEY_END, .scheme = 1}, + {"-", "_", 1.0, Code, KEY_MINUS}, + {"0", ")", 1.0, Code, KEY_0}, + {"=", "+", 1.0, Code, KEY_EQUAL}, +@@ -430,7 +425,6 @@ static struct key keys_specialpad[] = { + }; + + static struct key keys_simple[] = { +- {"q", "Q", 1.0, Code, KEY_Q, &layouts[Emoji]}, + {"w", "W", 1.0, Code, KEY_W, &layouts[ComposeW]}, + {"e", "E", 1.0, Code, KEY_E, &layouts[ComposeE]}, + {"r", "R", 1.0, Code, KEY_R, &layouts[ComposeR]}, +@@ -455,7 +449,7 @@ static struct key keys_simple[] = { + {"", "", 0.5, Pad}, + {"", "", 0.0, EndRow}, + +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"z", "Z", 1.0, Code, KEY_Z, &layouts[ComposeZ]}, + {"x", "X", 1.0, Code, KEY_X, &layouts[ComposeX]}, + {"c", "C", 1.0, Code, KEY_C, &layouts[ComposeC]}, +@@ -463,10 +457,10 @@ static struct key keys_simple[] = { + {"b", "B", 1.0, Code, KEY_B, &layouts[ComposeB]}, + {"n", "N", 1.0, Code, KEY_N, &layouts[ComposeN]}, + {"m", "M", 1.0, Code, KEY_M, &layouts[ComposeM]}, +- {"⌫", "⌫", 1.5, Code, KEY_BACKSPACE, .scheme = 1}, ++ {"Back", "Back", 1.5, Code, KEY_BACKSPACE, .scheme = 1}, + {"", "", 0.0, EndRow}, + +- {"⌨͕", "⌨͔", 1.0, NextLayer, .scheme = 1}, ++ {"123", "123", 1.0, NextLayer, .scheme = 1}, + {"Cmp", "Cmp", 1.0, Compose, .scheme = 1}, + {"Ctr", "Ctr", 1.0, Mod, Ctrl, .scheme = 1}, + {"-", "_", 0.75, Code, KEY_MINUS, &layouts[ComposeMath]}, +@@ -482,7 +476,7 @@ static struct key keys_simple[] = { + static struct key keys_dialer[] = { + {"Esc", "Esc", 1.0, Code, KEY_ESC}, + {"+","+", 1.0, Code, KEY_KPPLUS}, +- {"⌫", "⌫", 1.0, Code, KEY_BACKSPACE}, ++ {"Back", "Back", 1.0, Code, KEY_BACKSPACE}, + {"", "", 0.0, EndRow}, + {"1", "1", 1.0, Code, KEY_1}, + {"2", "2", 1.0, Code, KEY_2}, +@@ -500,7 +494,7 @@ static struct key keys_dialer[] = { + {"0", "0", 1.0, Code, KEY_0}, + {"#", "#", 1.0, Code, KEY_3, 0, Shift}, + {"", "", 0.0, EndRow}, +- {"⌨͕", "⌨͔", 1.0, NextLayer, .scheme = 1}, ++ {"123", "123", 1.0, NextLayer, .scheme = 1}, + {"Enter", "Enter", 2.0, Code, KEY_ENTER, .scheme = 1}, + + /* end of layout */ +@@ -549,7 +543,7 @@ static struct key keys_cyrillic[] = { + {"ж", "Ж", 1.0, Code, KEY_SEMICOLON}, + {"", "", 0.0, EndRow}, + +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"я", "Я", 1.0, Code, KEY_Z}, + {"ч", "Ч", 1.0, Code, KEY_X, &layouts[ComposeCyrChe]}, + {"c", "С", 1.0, Code, KEY_C}, +@@ -558,11 +552,11 @@ static struct key keys_cyrillic[] = { + {"т", "Т", 1.0, Code, KEY_N}, + {"ь", "Ь", 1.0, Code, KEY_M}, + {"б", "Б", 1.0, Code, KEY_COMMA}, +- {"⌫", "⌫", 1.5, Code, KEY_BACKSPACE, .scheme = 1}, ++ {"Back", "Back", 1.5, Code, KEY_BACKSPACE, .scheme = 1}, + + {"", "", 0.0, EndRow}, + +- {"⌨͕", "⌨͔", 1.0, NextLayer, .scheme = 1}, ++ {"123", "123", 1.0, NextLayer, .scheme = 1}, + {"Cmp", "Cmp", 1.0, Compose, .scheme = 1}, + {",", "'", 1.0, Code, KEY_EQUAL, &layouts[ComposeMath]}, + {"", "Tab", 4.0, Code, KEY_SPACE}, +@@ -586,7 +580,6 @@ static struct key keys_arabic[] = { + {"٠", ")", 1.0, Code, KEY_0, &layouts[ComposeBracket]}, + {"", "", 0.0, EndRow}, + +- {"ض", "ـَ", 1.0, Code, KEY_Q, &layouts[Emoji]}, + {"ص", "ـً", 1.0, Code, KEY_W}, + {"ث", "ـُ", 1.0, Code, KEY_E}, + {"ق", "ـٌ", 1.0, Code, KEY_R}, +@@ -622,12 +615,12 @@ static struct key keys_arabic[] = { + {"ز", "؟", 1.0, Code, KEY_COMMA}, + {"ظ", ".", 1.0, Code, KEY_DOT}, + {"د", ">", 1.0, Code, KEY_RIGHTBRACE}, +- {"⌫", "⌫", 1.0, Code, KEY_BACKSPACE, .scheme = 1}, ++ {"Back", "Back", 1.0, Code, KEY_BACKSPACE, .scheme = 1}, + + {"", "", 0.0, EndRow}, + +- {"⌨͕", "⌨͔", 1.0, NextLayer, .scheme = 1}, +- {"⇧", "⇫", 1.0, Mod, Shift, .scheme = 1}, ++ {"123", "123", 1.0, NextLayer, .scheme = 1}, ++ {"Shift", "Shift", 1.0, Mod, Shift, .scheme = 1}, + {"Cmp", "Cmp", 1.0, Compose, .scheme = 1}, + {"", "Tab", 5.0, Code, KEY_SPACE}, + {"Enter", "Enter", 2.0, Code, KEY_ENTER, .scheme = 1}, +@@ -682,12 +675,12 @@ static struct key keys_georgian[] = { + {"მ", "M", 1.0, Code, KEY_M}, + {",", "<", 1.0, Code, KEY_COMMA, &layouts[ComposeMath]}, + {".", ">", 1.0, Code, KEY_DOT, &layouts[ComposePunctuation]}, +- {"⌫", "⌫", 1.0, Code, KEY_BACKSPACE, .scheme = 1}, ++ {"Back", "Back", 1.0, Code, KEY_BACKSPACE, .scheme = 1}, + + {"", "", 0.0, EndRow}, + +- {"⌨͕", "⌨͔", 1.0, NextLayer, .scheme = 1}, +- {"⇧", "⇫", 1.0, Mod, Shift, .scheme = 1}, ++ {"123", "123", 1.0, NextLayer, .scheme = 1}, ++ {"Shift", "Shift", 1.0, Mod, Shift, .scheme = 1}, + {"Cmp", "Cmp", 1.0, Compose, .scheme = 1}, + {"", "Tab", 5.0, Code, KEY_SPACE}, + {"Enter", "Enter", 2.0, Code, KEY_ENTER, .scheme = 1}, +@@ -738,7 +731,7 @@ static struct key keys_persian[] = { + {"گ", "؛", 1.0, Code, KEY_APOSTROPHE}, + {"", "", 0.0, EndRow}, + +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"ظ", "ك", 1.0, Code, KEY_Z}, + {"ط", "ـٓ", 1.0, Code, KEY_X}, + {"ژ", ">", 1.0, Code, KEY_BACKSLASH}, +@@ -748,14 +741,14 @@ static struct key keys_persian[] = { + {"د", "ـٔ", 1.0, Code, KEY_N}, + {"پ", "ء", 1.0, Code, KEY_M}, + {"و", "\\", 1.0, Code, KEY_COMMA}, +- {"⌫", "⌫", 1.5, Code, KEY_BACKSPACE, .scheme = 1}, ++ {"Back", "Back", 1.5, Code, KEY_BACKSPACE, .scheme = 1}, + {"", "", 0.0, EndRow}, + +- {"⌨͕", "⌨͔", 1.0, NextLayer, .scheme = 1}, ++ {"123", "123", 1.0, NextLayer, .scheme = 1}, + {"Cmp", "Cmp", 1.0, Compose, .scheme = 1}, + {".", "،", 1.0, Code, KEY_DOT, &layouts[ComposePunctuation]}, + {"", "Tab", 4.0, Code, KEY_SPACE}, +- {"⥣", "↥", 1.0, Code, KEY_GRAVE}, ++ {"`", "~", 1.0, Code, KEY_GRAVE}, + {"؟", "!", 1.0, Code, KEY_SLASH, &layouts[ComposePunctuation]}, + {"Enter", "Enter", 2.0, Code, KEY_ENTER, .scheme = 1}, + +@@ -802,7 +795,7 @@ static struct key keys_greek[] = { + {"΄", "¨", 1.0, Code, KEY_SEMICOLON, &layouts[ComposeBracket]}, + {"", "", 0.0, EndRow}, + +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"ζ", "Ζ", 1.0, Code, KEY_Z}, + {"χ", "Χ", 1.0, Code, KEY_X}, + {"ψ", "Ψ", 1.0, Code, KEY_C}, +@@ -811,10 +804,10 @@ static struct key keys_greek[] = { + {"ν", "Ν", 1.0, Code, KEY_N}, + {"μ", "Μ", 1.0, Code, KEY_M}, + {"/", "\\", 1.0, Code, KEY_SLASH}, +- {"⌫", "⌫", 1.5, Code, KEY_BACKSPACE, .scheme = 1}, ++ {"Back", "Back", 1.5, Code, KEY_BACKSPACE, .scheme = 1}, + {"", "", 0.0, EndRow}, + +- {"⌨͕", "⌨͔", 1.5, NextLayer, .scheme = 1}, ++ {"123", "123", 1.5, NextLayer, .scheme = 1}, + {",", "'", 1.0, Code, KEY_COMMA, &layouts[ComposeMath]}, + {"", "Tab", 5, Code, KEY_SPACE}, + {".", "\"", 1.0, Code, KEY_DOT, &layouts[ComposePunctuation]}, +@@ -858,11 +851,11 @@ static struct key keys_hebrew[] = { + {"צ", "צ", 1.0, Code, KEY_M}, + {"ת", "ת", 1.0, Code, KEY_COMMA}, + {"ץ", "ץ", 1.0, Code, KEY_DOT}, +- {"⌫", "⌫", 1.0, Code, KEY_BACKSPACE, .scheme = 1}, ++ {"Back", "Back", 1.0, Code, KEY_BACKSPACE, .scheme = 1}, + + {"", "", 0.0, EndRow}, + +- {"⌨͕", "⌨͔", 1.0, NextLayer, .scheme = 1}, ++ {"123", "123", 1.0, NextLayer, .scheme = 1}, + {"Cmp", "Cmp", 1.0, Compose, .scheme = 1}, + {",", "\"", 1.0, Code, KEY_APOSTROPHE, &layouts[ComposeMath]}, + {"", "Tab", 3.5, Code, KEY_SPACE}, +@@ -889,7 +882,7 @@ static struct key keys_compose_a[] = { + {"α", "Α", 1.0, Copy, 0x03B1, 0, 0x0391}, + {"", "", 9.0, Pad}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Abc", "Abc", 1.0, BackLayer, .scheme = 1}, +@@ -913,7 +906,7 @@ static struct key keys_compose_e[] = { + {"ǝ", "Ə", 1.0, Copy, 0x0259, 0, 0x018F}, + {"", "", 8.0, Pad}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Abc", "Abc", 1.0, BackLayer, .scheme = 1}, +@@ -930,7 +923,7 @@ static struct key keys_compose_y[] = { + {"υ", "Υ", 1.0, Copy, 0x03C5, 0, 0x03A5}, + {"", "", 9.0, Pad}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Abc", "Abc", 1.0, BackLayer, .scheme = 1}, +@@ -953,7 +946,7 @@ static struct key keys_compose_u[] = { + {"υ", "Υ", 1.0, Copy, 0x03C5, 0, 0x03A5}, + {"", "", 9.0, Pad}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Abc", "Abc", 1.0, BackLayer, .scheme = 1}, +@@ -977,7 +970,7 @@ static struct key keys_compose_o[] = { + {"ω", "Ο", 1.0, Copy, 0x03C9, 0, 0x03A9}, + {"", "", 8.0, Pad}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Abc", "Abc", 1.0, BackLayer, .scheme = 1}, +@@ -1001,7 +994,7 @@ static struct key keys_compose_i[] = { + {"η", "Η", 1.0, Copy, 0x03B7, 0, 0x0397}, + {"", "", 8.0, Pad}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Abc", "Abc", 1.0, BackLayer, .scheme = 1}, +@@ -1009,58 +1002,11 @@ static struct key keys_compose_i[] = { + {"", "", 0.0, Last}, + }; + +-static struct key keys_emoji[] = { +- {"🙂", "🙏", 1.0, Copy, 0x1f642, 0, 0x1f64f}, // Emojis +- {"😀", "🙋", 1.0, Copy, 0x1f600, 0, 0x1f64b}, +- {"😁", "✋", 1.0, Copy, 0x1f601, 0, 0x270B}, +- {"😂", "🙇", 1.0, Copy, 0x1f602, 0, 0x1f647}, +- {"😃", "👨", 1.0, Copy, 0x1f603, 0, 0x1f468}, +- {"😄", "👩", 1.0, Copy, 0x1f604, 0, 0x1f469}, +- {"😅", "👶", 1.0, Copy, 0x1f605, 0, 0x1f476}, +- {"😆", "👻", 1.0, Copy, 0x1f606, 0, 0x1f47b}, +- {"😇", "✨", 1.0, Copy, 0x1f607, 0, 0x2728}, +- {"🤣", "💰", 1.0, Copy, 0x1f923, 0, 0x1f4b0}, +- {"", "", 0.0, EndRow}, +- {"😉", "🐕", 1.0, Copy, 0x1f609, 0, 0x1f415}, +- {"😊", "🐈", 1.0, Copy, 0x1f60a, 0, 0x1f408}, +- {"😋", "🐧", 1.0, Copy, 0x1f60b, 0, 0x1f427}, +- {"😌", "🐇", 1.0, Copy, 0x1f60c, 0, 0x1f407}, +- {"😍", "💔", 1.0, Copy, 0x1f60d, 0, 0x1f494}, +- {"😘", "💕", 1.0, Copy, 0x1f618, 0, 0x1f495}, +- {"😎", "❤", 1.0, Copy, 0x1f60e, 0, 0x2764}, +- {"😐", "😏", 1.0, Copy, 0x1f610, 0, 0x1f60f}, +- {"😒", "👀", 1.0, Copy, 0x1f612, 0, 0x1f440}, +- {"😓", "💀", 1.0, Copy, 0x1f613, 0, 0x1f480}, +- {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.0, Mod, Shift, .scheme = 1}, +- {"😛", "😜", 1.0, Copy, 0x1f61b, 0, 0x1f61c}, +- {"😮", "😝", 1.0, Copy, 0x1f62e, 0, 0x1f61d}, +- {"😟", "😞", 1.0, Copy, 0x1f61f, 0, 0x1f61e}, +- {"😠", "🥺", 1.0, Copy, 0x1f620, 0, 0x1f97a}, +- {"😢", "👿", 1.0, Copy, 0x1f622, 0, 0x1f47f}, +- {"😭", "😯", 1.0, Copy, 0x1f62d, 0, 0x1f62f}, +- {"😳", "😕", 1.0, Copy, 0x1f633, 0, 0x1f615}, +- {"😴", "😵", 1.0, Copy, 0x1f634, 0, 0x1f635}, +- {"⌫", "⌫", 1.0, Code, KEY_BACKSPACE, .scheme = 1}, +- {"", "", 0.0, EndRow}, +- {"Abc", "Abc", 1.0, BackLayer, .scheme = 1}, +- {"⌨͕", "⌨͔", 1.0, NextLayer, .scheme = 1}, +- {"👆", "👊", 1.0, Copy, 0x1f446, 0, 0x1f44a}, +- {"👇", "👌", 1.0, Copy, 0x1f447, 0, 0x1f44c}, +- {"👈", "👏", 1.0, Copy, 0x1f448, 0, 0x1f44f}, +- {"👉", "👐", 1.0, Copy, 0x1f449, 0, 0x1f450}, +- {"👋", "🙌", 1.0, Copy, 0x1f44b, 0, 0x1f64c}, +- {"👍", "✅", 1.0, Copy, 0x1f44d, 0, 0x2705}, +- {"👎", "💪", 1.0, Copy, 0x1f44e, 0, 0x1f4aa}, +- {"Enter", "Enter", 1.0, Code, KEY_ENTER, .scheme = 1}, +- {"", "", 0.0, Last}, +-}; +- + static struct key keys_nav[] = { + {"Esc", "Esc", 1.0, Code, KEY_ESC, .scheme = 1}, +- {"⌫", "⌫", 1.0, Code, KEY_BACKSPACE, .scheme = 1}, ++ {"Back", "Back", 1.0, Code, KEY_BACKSPACE, .scheme = 1}, + {"↑", "↑", 1.0, Code, KEY_UP, .scheme = 1}, +- {"⇈", "⇈", 1.0, Code, KEY_PAGEUP, .scheme = 1}, ++ {"Up", "Up", 1.0, Code, KEY_PAGEUP, .scheme = 1}, + {"", "", 0.0, EndRow}, + + {"q", "q", 1.0, Code, KEY_Q, .scheme = 1}, +@@ -1069,10 +1015,10 @@ static struct key keys_nav[] = { + {"→", "→", 1.0, Code, KEY_RIGHT, .scheme = 1}, + {"", "", 0.0, EndRow}, + +- {"⌨͕", "⌨͔", 1.0, NextLayer, .scheme = 1}, +- {"", "↹", 1.0, Code, KEY_SPACE, .scheme = 1}, ++ {"123", "123", 1.0, NextLayer, .scheme = 1}, ++ {"", "Space", 1.0, Code, KEY_SPACE, .scheme = 1}, + {"↓", "↓", 1.0, Code, KEY_DOWN, .scheme = 1}, +- {"⇊", "⇊", 1.0, Code, KEY_PAGEDOWN, .scheme = 1}, ++ {"Down", "Down", 1.0, Code, KEY_PAGEDOWN, .scheme = 1}, + {"", "", 0.0, Last}, + }; + +@@ -1089,7 +1035,6 @@ static struct key keys_index[] = { + {"Pad", "Pad", 1.0, Layout, 0, &layouts[SpecialPad]}, + {"Nav", "Nav", 1.0, Layout, 0, &layouts[Nav], .scheme = 1}, + {"123", "123", 1.0, Layout, 0, &layouts[Dialer], .scheme = 1}, +- {"🙂", "🙂", 1.0, Layout, 0, &layouts[Emoji], .scheme = 1}, + {"", "", 0.0, EndRow}, + + {"Абв", "Абв", 1.0, Layout, 0, &layouts[Cyrillic], .scheme = 1}, +@@ -1104,7 +1049,6 @@ static struct key keys_index[] = { + static struct key keys_landscape[] = { + {"Esc", "Esc", 1.0, Code, KEY_ESC, .scheme = 1}, + {"", "", 0.5, Pad, .scheme = 1}, +- {"q", "Q", 1.0, Code, KEY_Q, &layouts[Emoji]}, + {"w", "W", 1.0, Code, KEY_W, &layouts[ComposeW]}, + {"e", "E", 1.0, Code, KEY_E, &layouts[ComposeE]}, + {"r", "R", 1.0, Code, KEY_R, &layouts[ComposeR]}, +@@ -1136,7 +1080,7 @@ static struct key keys_landscape[] = { + + {"←", "←", 0.75, Code, KEY_LEFT, .scheme = 1}, + {"→", "→", 0.75, Code, KEY_RIGHT, .scheme = 1}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"z", "Z", 1.0, Code, KEY_Z, &layouts[ComposeZ]}, + {"x", "X", 1.0, Code, KEY_X, &layouts[ComposeX]}, + {"c", "C", 1.0, Code, KEY_C, &layouts[ComposeC]}, +@@ -1146,10 +1090,10 @@ static struct key keys_landscape[] = { + {"m", "M", 1.0, Code, KEY_M, &layouts[ComposeM]}, + {"", "", 0.5, Pad, .scheme = 1}, + {"-", "_", 1.0, Code, KEY_MINUS, &layouts[ComposeBracket]}, +- {"⌫", "⌫", 1.5, Code, KEY_BACKSPACE, .scheme = 1}, ++ {"Back", "Back", 1.5, Code, KEY_BACKSPACE, .scheme = 1}, + {"", "", 0.0, EndRow}, + +- {"⌨͕", "⌨͔", 1.0, NextLayer, .scheme = 1}, ++ {"123", "123", 1.0, NextLayer, .scheme = 1}, + {"Cmp", "Cmp", 1.0, Compose, .scheme = 1}, + {"Ctr", "Ctr", 1.0, Mod, Ctrl, .scheme = 1}, + {",", "'", 1.0, Code, KEY_COMMA, &layouts[ComposeMath]}, +@@ -1178,10 +1122,9 @@ static struct key keys_landscape_special[] = { + {"Tab", "Tab", 1.0, Code, KEY_TAB, .scheme = 1}, + {"", "", 0.0, EndRow}, + +- {"⇈", "⇈", 1.0, Code, KEY_PAGEUP, .scheme = 1}, +- {"⇊", "⇊", 1.0, Code, KEY_PAGEDOWN, .scheme = 1}, ++ {"Up", "Up", 1.0, Code, KEY_PAGEUP, .scheme = 1}, ++ {"Down", "Down", 1.0, Code, KEY_PAGEDOWN, .scheme = 1}, + {"CpL", "CpL", 1.0, Mod, CapsLock, .scheme = 1}, +- {"🙂", "🙂", 1.0, Layout, 0, &layouts[Emoji]}, + {"`", "~", 1.0, Code, KEY_GRAVE}, + {"'", "\"", 1.0, Code, KEY_APOSTROPHE}, + {"-", "_", 1.0, Code, KEY_MINUS}, +@@ -1193,9 +1136,9 @@ static struct key keys_landscape_special[] = { + {"Del", "Del", 1.0, Code, KEY_DELETE, .scheme = 1}, + {"", "", 0.0, EndRow}, + +- {"⇤", "⇤", 1.0, Code, KEY_HOME, .scheme = 1}, +- {"⇥", "⇥", 1.0, Code, KEY_END, .scheme = 1}, +- {"⇧", "⇫", 2.0, Mod, Shift, .scheme = 1}, ++ {"Home", "Home", 1.0, Code, KEY_HOME, .scheme = 1}, ++ {"End", "End", 1.0, Code, KEY_END, .scheme = 1}, ++ {"Shift", "Shift", 2.0, Mod, Shift, .scheme = 1}, + {";", ":", 1.0, Code, KEY_SEMICOLON}, + {"<", "«", 1.0, Code, KEY_COMMA, 0, AltGr}, + {">", "»", 1.0, Code, KEY_DOT, 0, AltGr}, +@@ -1204,11 +1147,11 @@ static struct key keys_landscape_special[] = { + {".", "?", 1.0, Code, KEY_DOT, &layouts[ComposePunctuation]}, + {"/", ">", 1.0, Code, KEY_SLASH}, + {"", "", 0.5, Pad, .scheme = 1}, +- {"⌫", "⌫", 1.5, Code, KEY_BACKSPACE, .scheme = 1}, ++ {"Back", "Back", 1.5, Code, KEY_BACKSPACE, .scheme = 1}, + {"", "", 0.0, EndRow}, + + {"Abc", "Abc", 1.0, BackLayer, .scheme = 1}, +- {"⌨͕", "⌨͔", 1.0, NextLayer, .scheme = 1}, ++ {"123", "123", 1.0, NextLayer, .scheme = 1}, + {"Ctr", "Ctr", 1.0, Mod, Ctrl, .scheme = 1}, + {"Sup", "Sup", 1.0, Mod, Super, .scheme = 1}, + {"", "Tab", 5.0, Code, KEY_SPACE}, +@@ -1225,7 +1168,7 @@ static struct key keys_compose_w[] = { + {"", "", 9.0, Pad}, + {"", "", 0.0, EndRow}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Abc", "Abc", 1.0, BackLayer, .scheme = 1}, +@@ -1242,7 +1185,7 @@ static struct key keys_compose_r[] = { + {"ρ", "Ρ", 1.0, Copy, 0x03C1, 0, 0x03A1}, + {"", "", 9.0, Pad}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Abc", "Abc", 1.0, BackLayer, .scheme = 1}, +@@ -1261,7 +1204,7 @@ static struct key keys_compose_t[] = { + {"θ", "Θ", 1.0, Copy, 0x03B8, 0, 0x0398}, + {"", "", 8.0, Pad}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Abc", "Abc", 1.0, BackLayer, .scheme = 1}, +@@ -1274,7 +1217,7 @@ static struct key keys_compose_p[] = { + {"", "", 9.0, Pad}, + {"", "", 0.0, EndRow}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Abc", "Abc", 1.0, BackLayer, .scheme = 1}, +@@ -1294,7 +1237,7 @@ static struct key keys_compose_s[] = { + {"ς", "Σ", 1.0, Copy, 0x03C2, 0, 0x03A3}, + {"", "", 9.0, Pad}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Abc", "Abc", 1.0, BackLayer, .scheme = 1}, +@@ -1311,7 +1254,7 @@ static struct key keys_compose_d[] = { + {"δ", "Δ", 1.0, Copy, 0x03B4, 0, 0x0394}, + {"", "", 9.0, Pad}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Abc", "Abc", 1.0, BackLayer, .scheme = 1}, +@@ -1324,7 +1267,7 @@ static struct key keys_compose_f[] = { + {"", "", 9.0, Pad}, + {"", "", 0.0, EndRow}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Abc", "Abc", 1.0, BackLayer, .scheme = 1}, +@@ -1340,7 +1283,7 @@ static struct key keys_compose_g[] = { + {"γ", "Γ", 1.0, Copy, 0x03B3, 0, 0x0393}, + {"", "", 9.0, Pad}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Abc", "Abc", 1.0, BackLayer, .scheme = 1}, +@@ -1356,7 +1299,7 @@ static struct key keys_compose_h[] = { + {"η", "Η", 1.0, Copy, 0x03B7, 0, 0x0397}, + {"", "", 9.0, Pad}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Abc", "Abc", 1.0, BackLayer, .scheme = 1}, +@@ -1370,7 +1313,7 @@ static struct key keys_compose_j[] = { + {"", "", 0.0, EndRow}, + {"", "", 10.0, Pad}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Abc", "Abc", 1.0, BackLayer, .scheme = 1}, +@@ -1386,7 +1329,7 @@ static struct key keys_compose_k[] = { + {"κ", "Κ", 1.0, Copy, 0x03BA, 0, 0x039A}, + {"", "", 9.0, Pad}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Abc", "Abc", 1.0, BackLayer, .scheme = 1}, +@@ -1403,7 +1346,7 @@ static struct key keys_compose_l[] = { + {"λ", "Λ", 1.0, Copy, 0x03BB, 0, 0x039B}, + {"", "", 9.0, Pad}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Abc", "Abc", 1.0, BackLayer, .scheme = 1}, +@@ -1420,7 +1363,7 @@ static struct key keys_compose_z[] = { + {"ζ", "Ζ", 1.0, Copy, 0x03B6, 0, 0x0396}, + {"", "", 9.0, Pad}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Abc", "Abc", 1.0, BackLayer, .scheme = 1}, +@@ -1434,7 +1377,7 @@ static struct key keys_compose_x[] = { + {"", "", 9.0, Pad}, + {"", "", 0.0, EndRow}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Abc", "Abc", 1.0, BackLayer, .scheme = 1}, +@@ -1453,7 +1396,7 @@ static struct key keys_compose_c[] = { + {"χ", "Χ", 1.0, Copy, 0x03C7, 0, 0x03A7}, + {"", "", 9.0, Pad}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Abc", "Abc", 1.0, BackLayer, .scheme = 1}, +@@ -1464,7 +1407,7 @@ static struct key keys_compose_c[] = { + static struct key keys_compose_v[] = { + {"", "", 0.0, EndRow}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Abc", "Abc", 1.0, BackLayer, .scheme = 1}, +@@ -1477,7 +1420,7 @@ static struct key keys_compose_b[] = { + {"", "", 9.0, Pad}, + {"", "", 0.0, EndRow}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Abc", "Abc", 1.0, BackLayer, .scheme = 1}, +@@ -1496,7 +1439,7 @@ static struct key keys_compose_n[] = { + {"ν", "Ν", 1.0, Copy, 0x03BD, 0, 0x039D}, + {"", "", 9.0, Pad}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Abc", "Abc", 1.0, BackLayer, .scheme = 1}, +@@ -1509,7 +1452,7 @@ static struct key keys_compose_m[] = { + {"", "", 9.0, Pad}, + {"", "", 0.0, EndRow}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Abc", "Abc", 1.0, BackLayer, .scheme = 1}, +@@ -1523,7 +1466,7 @@ static struct key keys_compose_cyr_i[] = { + {"", "", 8.0, Pad}, + {"", "", 0.0, EndRow}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Абв", "Абв", 1.0, BackLayer, .scheme = 1}, +@@ -1536,7 +1479,7 @@ static struct key keys_compose_cyr_j[] = { + {"", "", 9.0, Pad}, + {"", "", 0.0, EndRow}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Абв", "Абв", 1.0, BackLayer, .scheme = 1}, +@@ -1549,7 +1492,7 @@ static struct key keys_compose_cyr_e[] = { + {"", "", 9.0, Pad}, + {"", "", 0.0, EndRow}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Абв", "Абв", 1.0, BackLayer, .scheme = 1}, +@@ -1562,7 +1505,7 @@ static struct key keys_compose_cyr_u[] = { + {"", "", 9.0, Pad}, + {"", "", 0.0, EndRow}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Абв", "Абв", 1.0, BackLayer, .scheme = 1}, +@@ -1575,7 +1518,7 @@ static struct key keys_compose_cyr_l[] = { + {"", "", 9.0, Pad}, + {"", "", 0.0, EndRow}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Абв", "Абв", 1.0, BackLayer, .scheme = 1}, +@@ -1588,7 +1531,7 @@ static struct key keys_compose_cyr_n[] = { + {"", "", 9.0, Pad}, + {"", "", 0.0, EndRow}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Абв", "Абв", 1.0, BackLayer, .scheme = 1}, +@@ -1602,7 +1545,7 @@ static struct key keys_compose_cyr_che[] = { + {"", "", 8.0, Pad}, + {"", "", 0.0, EndRow}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Абв", "Абв", 1.0, BackLayer, .scheme = 1}, +@@ -1616,7 +1559,7 @@ static struct key keys_compose_cyr_tse[] = { + {"", "", 8.0, Pad}, + {"", "", 0.0, EndRow}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Абв", "Абв", 1.0, BackLayer, .scheme = 1}, +@@ -1630,7 +1573,7 @@ static struct key keys_compose_cyr_g[] = { + {"", "", 8.0, Pad}, + {"", "", 0.0, EndRow}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Абв", "Абв", 1.0, BackLayer, .scheme = 1}, +@@ -1643,7 +1586,7 @@ static struct key keys_compose_cyr_k[] = { + {"", "", 9.0, Pad}, + {"", "", 0.0, EndRow}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 8.5, Pad}, + {"", "", 0.0, EndRow}, + {"Абв", "Абв", 1.0, BackLayer, .scheme = 1}, +@@ -1654,7 +1597,7 @@ static struct key keys_compose_cyr_k[] = { + static struct key keys_compose_math[] = { + {"", "", 0.0, EndRow}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"+", "+", 1, Code, KEY_EQUAL, 0, Shift}, + {"/", "/", 1, Code, KEY_SLASH}, + {"*", "*", 1, Code, KEY_8, 0, Shift}, +@@ -1679,7 +1622,7 @@ static struct key keys_compose_punctuation[] = { + {"⍽", "⍽", 1, Copy, 0x202F, 0, 0x00A0}, + {"", "", 0.5, Pad}, + {"", "", 0.0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"", "", 3, Pad}, + {"!", "!", 1, Code, KEY_1, 0, Shift}, + {"?", "?", 1, Code, KEY_DOT, 0, Shift}, +@@ -1701,10 +1644,10 @@ static struct key keys_compose_bracket[] = { + {"]", "]", 1, Code, KEY_RIGHTBRACE}, + {"", "", 4.5, Pad}, + {"", "", 0, EndRow}, +- {"⇧", "⇫", 1.5, Mod, Shift, .scheme = 1}, ++ {"Shift", "Shift", 1.5, Mod, Shift, .scheme = 1}, + {"<", "<", 1, Code, KEY_COMMA, 0, AltGr}, + {">", ">", 1, Code, KEY_SLASH, 0, Shift}, +- {"`", "`", 1, Code, KEY_GRAVE}, ++ {"`", "~", 1, Code, KEY_GRAVE}, + {"\"", "\"", 1, Code, KEY_APOSTROPHE, 0, Shift}, + {"'", "'", 1, Code, KEY_APOSTROPHE}, + {"", "", 3.5, Pad}, diff --git a/projects/ROCKNIX/packages/apps/rocknix-touchscreen-keyboard/sources/rocknix-touchscreen-keyboard b/projects/ROCKNIX/packages/apps/rocknix-touchscreen-keyboard/sources/rocknix-touchscreen-keyboard new file mode 100644 index 0000000000..b600f198d3 --- /dev/null +++ b/projects/ROCKNIX/packages/apps/rocknix-touchscreen-keyboard/sources/rocknix-touchscreen-keyboard @@ -0,0 +1,12 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2025-present ROCKNIX (https://github.com/ROCKNIX) + +. /etc/profile + +PID="$(pidof wvkbd-mobintl)" +if [ "$PID" != "" ]; then + killall wvkbd-mobintl +else + /usr/bin/wvkbd-mobintl -L 350 -fg 6b6b75 -fg-sp 6b6b75 -bg 1d1d1d --text ffffff --text-sp ffffff -fn 50 -l simple --hidden +fi diff --git a/projects/ROCKNIX/packages/apps/rocknix-touchscreen-keyboard/system.d/touchkeyboard.service b/projects/ROCKNIX/packages/apps/rocknix-touchscreen-keyboard/system.d/touchkeyboard.service new file mode 100644 index 0000000000..e9f665dbcc --- /dev/null +++ b/projects/ROCKNIX/packages/apps/rocknix-touchscreen-keyboard/system.d/touchkeyboard.service @@ -0,0 +1,14 @@ +[Unit] +Description=touchscreen keyboard service +After=input.service +Before=rocknix.target +StartLimitIntervalSec=0 + +[Service] +Environment=HOME=/storage +ExecStart=/usr/bin/rocknix-touchscreen-keyboard +Restart=always +RestartSec=1 + +[Install] +WantedBy=multi-user.target diff --git a/projects/ROCKNIX/packages/hardware/quirks/platforms/AMD64/065-Touchscreen-events b/projects/ROCKNIX/packages/hardware/quirks/platforms/AMD64/065-Touchscreen-events new file mode 100644 index 0000000000..c5aa7c04ba --- /dev/null +++ b/projects/ROCKNIX/packages/hardware/quirks/platforms/AMD64/065-Touchscreen-events @@ -0,0 +1,12 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2025 ROCKNIX (https://github.com/ROCKNIX) + +# Minimal OS variable loading for performance +. /etc/profile.d/001-functions + +TOUCHSCREEN_EVENTS=$(get_setting key.touchscreen.events) +if [ -z "${TOUCHSCREEN_EVENTS}" ] +then + set_setting key.touchscreen.events 1 +fi diff --git a/projects/ROCKNIX/packages/hardware/quirks/platforms/RK3399/065-Touchscreen-events b/projects/ROCKNIX/packages/hardware/quirks/platforms/RK3399/065-Touchscreen-events new file mode 100644 index 0000000000..c5aa7c04ba --- /dev/null +++ b/projects/ROCKNIX/packages/hardware/quirks/platforms/RK3399/065-Touchscreen-events @@ -0,0 +1,12 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2025 ROCKNIX (https://github.com/ROCKNIX) + +# Minimal OS variable loading for performance +. /etc/profile.d/001-functions + +TOUCHSCREEN_EVENTS=$(get_setting key.touchscreen.events) +if [ -z "${TOUCHSCREEN_EVENTS}" ] +then + set_setting key.touchscreen.events 1 +fi diff --git a/projects/ROCKNIX/packages/hardware/quirks/platforms/RK3588/065-Touchscreen-events b/projects/ROCKNIX/packages/hardware/quirks/platforms/RK3588/065-Touchscreen-events new file mode 100644 index 0000000000..c5aa7c04ba --- /dev/null +++ b/projects/ROCKNIX/packages/hardware/quirks/platforms/RK3588/065-Touchscreen-events @@ -0,0 +1,12 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2025 ROCKNIX (https://github.com/ROCKNIX) + +# Minimal OS variable loading for performance +. /etc/profile.d/001-functions + +TOUCHSCREEN_EVENTS=$(get_setting key.touchscreen.events) +if [ -z "${TOUCHSCREEN_EVENTS}" ] +then + set_setting key.touchscreen.events 1 +fi diff --git a/projects/ROCKNIX/packages/hardware/quirks/platforms/SDM845/065-Touchscreen-events b/projects/ROCKNIX/packages/hardware/quirks/platforms/SDM845/065-Touchscreen-events new file mode 100644 index 0000000000..c5aa7c04ba --- /dev/null +++ b/projects/ROCKNIX/packages/hardware/quirks/platforms/SDM845/065-Touchscreen-events @@ -0,0 +1,12 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2025 ROCKNIX (https://github.com/ROCKNIX) + +# Minimal OS variable loading for performance +. /etc/profile.d/001-functions + +TOUCHSCREEN_EVENTS=$(get_setting key.touchscreen.events) +if [ -z "${TOUCHSCREEN_EVENTS}" ] +then + set_setting key.touchscreen.events 1 +fi diff --git a/projects/ROCKNIX/packages/hardware/quirks/platforms/SM8250/065-Touchscreen-events b/projects/ROCKNIX/packages/hardware/quirks/platforms/SM8250/065-Touchscreen-events new file mode 100644 index 0000000000..c5aa7c04ba --- /dev/null +++ b/projects/ROCKNIX/packages/hardware/quirks/platforms/SM8250/065-Touchscreen-events @@ -0,0 +1,12 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2025 ROCKNIX (https://github.com/ROCKNIX) + +# Minimal OS variable loading for performance +. /etc/profile.d/001-functions + +TOUCHSCREEN_EVENTS=$(get_setting key.touchscreen.events) +if [ -z "${TOUCHSCREEN_EVENTS}" ] +then + set_setting key.touchscreen.events 1 +fi diff --git a/projects/ROCKNIX/packages/hardware/quirks/platforms/SM8550/065-Touchscreen-events b/projects/ROCKNIX/packages/hardware/quirks/platforms/SM8550/065-Touchscreen-events new file mode 100644 index 0000000000..c5aa7c04ba --- /dev/null +++ b/projects/ROCKNIX/packages/hardware/quirks/platforms/SM8550/065-Touchscreen-events @@ -0,0 +1,12 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2025 ROCKNIX (https://github.com/ROCKNIX) + +# Minimal OS variable loading for performance +. /etc/profile.d/001-functions + +TOUCHSCREEN_EVENTS=$(get_setting key.touchscreen.events) +if [ -z "${TOUCHSCREEN_EVENTS}" ] +then + set_setting key.touchscreen.events 1 +fi diff --git a/projects/ROCKNIX/packages/sysutils/system-utils/sources/scripts/input_sense b/projects/ROCKNIX/packages/sysutils/system-utils/sources/scripts/input_sense index 721238c0a9..f05240a13e 100755 --- a/projects/ROCKNIX/packages/sysutils/system-utils/sources/scripts/input_sense +++ b/projects/ROCKNIX/packages/sysutils/system-utils/sources/scripts/input_sense @@ -67,6 +67,15 @@ FUNCTION_HOTKEY_A_EVENT='*('${BTN_HOTKEY_A_MODIFIER}'), value *' FUNCTION_HOTKEY_B_EVENT='*('${BTN_HOTKEY_B_MODIFIER}'), value *' FUNCTION_HOTKEY_C_EVENT='*('${BTN_HOTKEY_C_MODIFIER}'), value *' +FUNCTION_HOTKEY_TOUCH_EVENT="*(BTN_TOUCH), value 1*" + +TOUCHSCREEN_EVENTS=$(get_setting key.touchscreen.events) +if [ -z "${TOUCHSCREEN_EVENTS}" ] || [ "${TOUCHSCREEN_EVENTS}" = "0" ]; then + TOUCHSCREEN_EVENTS=false +else + TOUCHSCREEN_EVENTS=true +fi + ### Define static values for dpad buttons and as a hat. FUNCTION_HOTKEY_DPAD_UP_EVENT="*(BTN_DPAD_UP), value 1*" FUNCTION_HOTKEY_DPAD_DOWN_EVENT="*(BTN_DPAD_DOWN), value 1*" @@ -172,19 +181,23 @@ get_devices() { local KJDEVS=false local FOUNDKEYS=false local FOUNDJOY=false + local FOUNDTOUCH=false local RETRY=5 while [ ${KJDEVS} = false ]; do for DEV in /dev/input/ev* do unset SUPPORTS - SUPPORTS=$(udevadm info ${DEV} | awk '/ID_INPUT_KEY=|ID_INPUT_JOYSTICK=/ {print $2}') + SUPPORTS=$(udevadm info ${DEV} | awk '/ID_INPUT_KEY=|ID_INPUT_JOYSTICK=|ID_INPUT_TOUCHSCREEN=/ {print $2}') if [ -n "${SUPPORTS}" ]; then DEVICE=$(udevadm info ${DEV} | awk 'BEGIN {FS="="} /DEVNAME=/ {print $2}') INPUT_DEVICES+=("${DEVICE}") if [[ "${SUPPORTS}" =~ ID_INPUT_KEY ]]; then ${DEBUG} && log $0 "Found Keyboard: ${DEVICE}" FOUNDKEYS=true + elif [[ "${SUPPORTS}" =~ ID_INPUT_TOUCHSCREEN ]]; then + ${DEBUG} && log $0 "Found Touchscreen: ${DEVICE}" + FOUNDTOUCH=true elif [[ "${SUPPORTS}" =~ ID_INPUT_JOYSTICK ]]; then ${DEBUG} && log $0 "Found Joystick: ${DEVICE}" FOUNDJOY=true @@ -348,5 +361,11 @@ set +e brightness down fi ;; + (${FUNCTION_HOTKEY_TOUCH_EVENT}) + if [ "${FN_A_PRESSED}" = true ] && [ "${TOUCHSCREEN_EVENTS}" = true ]; then + ${DEBUG} && log $0 "${FUNCTION_HOTKEY_TOUCH_EVENT}: Toggle Touchscreen Keyboard" + kill -34 $(pidof wvkbd-mobintl) + fi + ;; esac done diff --git a/projects/ROCKNIX/packages/virtual/gamesupport/package.mk b/projects/ROCKNIX/packages/virtual/gamesupport/package.mk index b1e46c8cf4..61222a9ab9 100644 --- a/projects/ROCKNIX/packages/virtual/gamesupport/package.mk +++ b/projects/ROCKNIX/packages/virtual/gamesupport/package.mk @@ -7,7 +7,7 @@ PKG_SITE="https://rocknix.org" PKG_SECTION="virtual" PKG_LONGDESC="Game support software metapackage." -PKG_GAMESUPPORT="sixaxis rocknix-hotkey jstest-sdl gamecontrollerdb sdljoytest sdltouchtest control-gen" +PKG_GAMESUPPORT="sixaxis rocknix-hotkey jstest-sdl gamecontrollerdb sdljoytest sdltouchtest control-gen rocknix-touchscreen-keyboard" PKG_DEPENDS_TARGET="${PKG_GAMESUPPORT}"