From edb0b9e7c28ca62ab227ee6224e36971ca2470b9 Mon Sep 17 00:00:00 2001 From: Rob Pilling Date: Sat, 20 Apr 2024 11:37:52 +0100 Subject: [PATCH 1/8] kbmulti: trim whitespace --- apps/kbmulti/lib.js | 14 +++++++------- apps/kbmulti/settings.js | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/apps/kbmulti/lib.js b/apps/kbmulti/lib.js index 2f0a1a9ae..baf79a6da 100644 --- a/apps/kbmulti/lib.js +++ b/apps/kbmulti/lib.js @@ -28,25 +28,25 @@ exports.input = function(options) { var caps = true; var layout; var btnWidth = g.getWidth()/3; - + function getMoveChar(){ return "\x00\x0B\x11\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00@\x1F\xE1\x00\x10\x00\x10\x01\x0F\xF0\x04\x01\x00"; } - + function getMoreChar(){ return "\x00\x0B\x11\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xDB\x1B`\x00\x00\x00"; } - function getCursorChar(){ - return "\x00\x0B\x11\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\xAA\xAA\x80"; } + return "\x00\x0B\x11\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\xAA\xAA\x80"; + } function displayText(hideMarker) { layout.clear(layout.text); //let charsBeforeCursor = textIndex; let charsAfterCursor = Math.min(text.length - textIndex, (textWidth)/2); - + let start = textIndex - Math.ceil(textWidth - charsAfterCursor); let startMore = false; @@ -110,12 +110,12 @@ exports.input = function(options) { var newLetter = letters[charCurrent][charIndex]; let pre = text.slice(0, textIndex); let post = text.slice(textIndex, text.length); - + text = pre + (caps ? newLetter.toUpperCase() : newLetter.toLowerCase()) + post; if(retire) retireCurrent(); - + // set a timeout charTimeout = setTimeout(function() { charTimeout = undefined; diff --git a/apps/kbmulti/settings.js b/apps/kbmulti/settings.js index 08dbb1925..7eb18ef5a 100644 --- a/apps/kbmulti/settings.js +++ b/apps/kbmulti/settings.js @@ -6,13 +6,13 @@ if (settings.autoLowercase===undefined) { settings.autoLowercase = true; } return settings; } - + function updateSetting(setting, value) { var settings = require('Storage').readJSON("kbmulti.settings.json", true) || {}; settings[setting] = value; require('Storage').writeJSON("kbmulti.settings.json", settings); } - + var mainmenu = { "" : { "title" : /*LANG*/"Multitap keyboard" }, "< Back" : back, From 20fd5b5b0a1aad2d1312c984b202be0f2213e0e6 Mon Sep 17 00:00:00 2001 From: Rob Pilling Date: Sat, 20 Apr 2024 11:47:24 +0100 Subject: [PATCH 2/8] kbmulti: use back option of showMenu --- apps/kbmulti/settings.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/kbmulti/settings.js b/apps/kbmulti/settings.js index 7eb18ef5a..57cca6519 100644 --- a/apps/kbmulti/settings.js +++ b/apps/kbmulti/settings.js @@ -14,8 +14,10 @@ } var mainmenu = { - "" : { "title" : /*LANG*/"Multitap keyboard" }, - "< Back" : back, + "" : { + "title" : /*LANG*/"Multitap keyboard", + "back": back, + }, /*LANG*/'Character selection timeout [ms]': { value: settings().charTimeout, min: 200, max: 1500, step : 50, From f70ac9aa402c48ad3f243f888446327582db7a7d Mon Sep 17 00:00:00 2001 From: Rob Pilling Date: Sat, 20 Apr 2024 12:00:01 +0100 Subject: [PATCH 3/8] kbmulti: remove unused argument --- apps/kbmulti/lib.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/kbmulti/lib.js b/apps/kbmulti/lib.js index baf79a6da..84598b52d 100644 --- a/apps/kbmulti/lib.js +++ b/apps/kbmulti/lib.js @@ -125,7 +125,7 @@ exports.input = function(options) { displayText(true); } - function retireCurrent(why) { + function retireCurrent() { if (caps && settings.autoLowercase) setCaps(); } From c2a5d2517a76d02dd689f0aec6b96e95c4f70294 Mon Sep 17 00:00:00 2001 From: Rob Pilling Date: Sat, 20 Apr 2024 12:01:39 +0100 Subject: [PATCH 4/8] kbmulti: remove unnecessary `if` --- apps/kbmulti/lib.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/kbmulti/lib.js b/apps/kbmulti/lib.js index 84598b52d..7e526a774 100644 --- a/apps/kbmulti/lib.js +++ b/apps/kbmulti/lib.js @@ -76,7 +76,7 @@ exports.input = function(options) { deactivateTimeout(charTimeout); if (textIndex > -1){ text = text.slice(0, textIndex) + text.slice(textIndex + 1); - if (textIndex > -1) textIndex --; + textIndex--; newCharacter(); } } From 2ffb3bed2f97e048b03c27bbc0f904d9be94049a Mon Sep 17 00:00:00 2001 From: Rob Pilling Date: Sat, 20 Apr 2024 12:01:47 +0100 Subject: [PATCH 5/8] kbmulti: auto-capitalise when at the start --- apps/kbmulti/lib.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/kbmulti/lib.js b/apps/kbmulti/lib.js index 7e526a774..04240b3e5 100644 --- a/apps/kbmulti/lib.js +++ b/apps/kbmulti/lib.js @@ -77,6 +77,8 @@ exports.input = function(options) { if (textIndex > -1){ text = text.slice(0, textIndex) + text.slice(textIndex + 1); textIndex--; + if (textIndex == -1 && !caps) + setCaps() newCharacter(); } } From 71a1da2cfedfe6a913d6df6ac2c6b035507392fc Mon Sep 17 00:00:00 2001 From: Rob Pilling Date: Sat, 20 Apr 2024 12:02:20 +0100 Subject: [PATCH 6/8] kbmulti: simplify default settings --- apps/kbmulti/lib.js | 11 ++++++----- apps/kbmulti/settings.js | 10 ++++++---- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/apps/kbmulti/lib.js b/apps/kbmulti/lib.js index 04240b3e5..471544b92 100644 --- a/apps/kbmulti/lib.js +++ b/apps/kbmulti/lib.js @@ -5,11 +5,12 @@ exports.input = function(options) { var text = options.text; if ("string"!=typeof text) text=""; - var settings = require('Storage').readJSON("kbmulti.settings.json", true) || {}; - if (settings.firstLaunch===undefined) { settings.firstLaunch = true; } - if (settings.charTimeout===undefined) { settings.charTimeout = 500; } - if (settings.showHelpBtn===undefined) { settings.showHelpBtn = true; } - if (settings.autoLowercase===undefined) { settings.autoLowercase = true; } + var settings = Object.assign({ + firstLaunch: true, + showHelpBtn: true, + charTimeout: 500, + autoLowercase: true, + }, require('Storage').readJSON("kbmulti.settings.json", true)); var fontSize = "6x15"; var Layout = require("Layout"); diff --git a/apps/kbmulti/settings.js b/apps/kbmulti/settings.js index 57cca6519..7ec7fd0cf 100644 --- a/apps/kbmulti/settings.js +++ b/apps/kbmulti/settings.js @@ -1,9 +1,11 @@ (function(back) { function settings() { - var settings = require('Storage').readJSON("kbmulti.settings.json", true) || {}; - if (settings.showHelpBtn===undefined) { settings.showHelpBtn = true; } - if (settings.charTimeout===undefined) { settings.charTimeout = 500; } - if (settings.autoLowercase===undefined) { settings.autoLowercase = true; } + var settings = Object.assign({ + showHelpBtn: true, + charTimeout: 500, + autoLowercase: true, + }, require('Storage').readJSON("kbmulti.settings.json", true)); + return settings; } From 20c28b9ef14c6d2029fb381a1123cd26befc9010 Mon Sep 17 00:00:00 2001 From: Rob Pilling Date: Sat, 20 Apr 2024 12:20:01 +0100 Subject: [PATCH 7/8] kbmulti: add setting to vibrate on interaction --- apps/kbmulti/lib.js | 7 +++++++ apps/kbmulti/settings.js | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/apps/kbmulti/lib.js b/apps/kbmulti/lib.js index 471544b92..bdd43d7aa 100644 --- a/apps/kbmulti/lib.js +++ b/apps/kbmulti/lib.js @@ -10,6 +10,7 @@ exports.input = function(options) { showHelpBtn: true, charTimeout: 500, autoLowercase: true, + vibrate: false, }, require('Storage').readJSON("kbmulti.settings.json", true)); var fontSize = "6x15"; @@ -99,7 +100,12 @@ exports.input = function(options) { charIndex = 0; } + function onInteract() { + if (settings.vibrate) Bangle.buzz(20); + } + function onKeyPad(key) { + onInteract(); var retire = 0; deactivateTimeout(charTimeout); // work out which char was pressed @@ -136,6 +142,7 @@ exports.input = function(options) { var moveMode = false; function onSwipe(dirLeftRight, dirUpDown) { + onInteract(); if (dirUpDown == -1) { moveMode = !moveMode; displayText(false); diff --git a/apps/kbmulti/settings.js b/apps/kbmulti/settings.js index 7ec7fd0cf..a39aa2e6c 100644 --- a/apps/kbmulti/settings.js +++ b/apps/kbmulti/settings.js @@ -4,6 +4,7 @@ showHelpBtn: true, charTimeout: 500, autoLowercase: true, + vibrate: false, }, require('Storage').readJSON("kbmulti.settings.json", true)); return settings; @@ -30,6 +31,10 @@ value: !!settings().autoLowercase, onchange: v => updateSetting("autoLowercase", v) }, + /*LANG*/'Vibrate on keypress': { + value: !!settings().vibrate, + onchange: v => updateSetting("vibrate", v) + }, /*LANG*/'Show help button?': { value: !!settings().showHelpBtn, onchange: v => updateSetting("showHelpBtn", v) From d6483983061bc998632d9e690ff1ba110e3c3f52 Mon Sep 17 00:00:00 2001 From: Rob Pilling Date: Sat, 20 Apr 2024 12:21:01 +0100 Subject: [PATCH 8/8] kbmulti: bump version --- apps/kbmulti/ChangeLog | 2 ++ apps/kbmulti/metadata.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/kbmulti/ChangeLog b/apps/kbmulti/ChangeLog index f60933fb8..1cd75a189 100644 --- a/apps/kbmulti/ChangeLog +++ b/apps/kbmulti/ChangeLog @@ -8,3 +8,5 @@ edge versions of 2v18. Falls back on `Bangle.on()` for backwards compatability. 0.08: Minor code improvements +0.09: Recapitalise when returning to the start, and add setting to vibrate on + interaction diff --git a/apps/kbmulti/metadata.json b/apps/kbmulti/metadata.json index b8fa74a45..28e2bbd38 100644 --- a/apps/kbmulti/metadata.json +++ b/apps/kbmulti/metadata.json @@ -1,6 +1,6 @@ { "id": "kbmulti", "name": "Multitap keyboard", - "version": "0.08", + "version": "0.09", "description": "A library for text input via multitap/T9 style keypad", "icon": "app.png", "type":"textinput",