Toucher: support for b2, Pastel: added 2 new custom fonts

pull/848/head
hughbarney 2021-10-16 14:49:13 +01:00
parent 6c221f19fe
commit f197380547
9 changed files with 152 additions and 48 deletions

View File

@ -1478,9 +1478,9 @@
"name": "Touch Launcher",
"shortName":"Toucher",
"icon": "app.png",
"version":"0.06",
"version":"0.07",
"description": "Touch enable left to right launcher.",
"tags": "tool,system,launcher",
"tags": "tool,system,launcher,b2",
"type":"launch",
"data": [
{"name":"toucher.json"}
@ -3517,7 +3517,7 @@
"name": "Pastel Clock",
"shortName": "Pastel",
"icon": "pastel.png",
"version":"0.04",
"version":"0.05",
"description": "A Configurable clock with custom fonts and background",
"tags": "clock,b2",
"type":"clock",

View File

@ -2,3 +2,4 @@
0.02: Display 12 hour clock as 12:xx not 00:xx when just into PM
0.03: Make it work with Gadgetbridge, Notifications fullscreen on a Bangle 2
0.04: Leave space at the bottom for Chrono widget, set back option at first option
0.05: Added 2 new fonts

View File

@ -1,7 +1,7 @@
# Pastel Clock - a configurable clock with custom fonts and background
* Designed specifically for Bangle 1 and Bangle 2
* A choice of 5 different custom fonts
* A choice of 7 different custom fonts
* Supports the Light and Dark themes
* Has a settings menu, change font, enable/disable the grid and the date display
@ -15,3 +15,6 @@ I came up with the name Pastel due to the shade of the grid background.
![](screenshot_b1_light.jpg)
![](screenshot_b2_dark.jpg)
![](screenshot_monoton.jpg)
![](screenshot_elite.jpg)

View File

@ -47,6 +47,16 @@ var scale = 1; // size multiplier for this font
g.setFontCustom(font, 46, widths, 58+(scale<<8)+(1<<16));
};
Graphics.prototype.setFontMonoton = function(scale) {
// Actual height 44 (43 - 0)
g.setFontCustom(atob("AAAAAAAAAAAAAAAAAAAABmwAAAAAAzYAAAAAAZsAAAAAAM2AAAAAAGbAAAAAADNgAAAAABmwAAAAAAzYAAAAAAZsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAD+AAAAAAf8AAAAAD/ggAAAAf8HwAAAD/g/4AAAf8H/AAAD/g/4OAAf8H/B/AD/g/4P+Af8H/B/wAfg/4P+AAMH/B/wAAA/4H+AAAD/A/4AAAB4H/AAAAAA/4AAAAAH/AAAAAAP4AAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAA/gAAAAAH//gAAAAf//8AAAA/AAPgAAA8f/x8AAB4//+PAAB5+APxwABzwfwecAAzj//jnAA7n+P85gA7ngAPO4AbnH/xzsAdnP/+c3AN3PAHndgGzOAA5m4DbuAAO7MD9mAADN2Bs3AAB2bA2bAAAbNgbNgAANmwNmwAAGzYGzYAADZsDdmAADN2B+7AABuzAbMwABmbgNneAD3NgHZ3+/3MwBuc//nO4A7nB8HGYAM58AfOcAHeP/+OcABzx/8ecAAc+AA+cAAHH//8cAAB4//48AAAPg+B8AAAD+AP4AAAAP//wAAAAA/+AAAAAAAAAAAAAAAAAAABsAAAAAAA2AAAAAAAbAAAAAAANgAAAAAAGwAAAAAADf////8ABv////+AA3/////AAbAAAAAAAN/////wAG/////4ADYAAAAAABv////+AA3/////AAb/////gANgAAAAAAG/////4ADf////8AAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAADcAAAA2wBs2AADbYA2bAADtsAbZgADm2AftwAHjbAN24AHNtgGzYAPO2wDZsAPebYBs2AOeNsA2bAec22AbNge87bANmwc55tgG7c8542wD9355zbYA2Z5zztsAbODzjm2ANz/nnjbADc/nnhtgBnCPHA2wA74fPAbYAOf+OANsADj8eAG2AA8A+ADbAAP/8AAAAAB/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAABgG6AAAAuwDdsAAG3YBs2AADZuA27AABu3A/ZgAA7dgbtwAAduwN2w2zG3YGzYbZjZsDZsNsxs2Bs2G2Y2bA2bDbMbNgbNhtmNmwNmw2zGzYG7MbdnbsD939m/d2A2Z/7PM3AbuBtwO7AOz73eeZgDc/9n+dwB3H2Y8cwAZ4HnA84AGf/5/84ADz/OP44AAeALwB4AAH/+//4AAA/+H/wAAADwAfAAAAAAAAAAAAAAAAAAAAAAAZsAAAAAB82AAAAAD+bAAAAAHzNgAAAAPjmwAAAAfHzYAAAB+P5sAAAD8fM2AAAHw+ObAAAPj8fNgAAfH4/mwAA+Ph8zYAAcfH4ZsAAA+Px82AAB8fD+bAAD4+HzNgABh8PhmwAAH4/AzYAAPx+AZsAAPD4AM2AAGHwP+bfgAfgH/NvwA/AABmwAA8AAAzYAAYAA/5t+AAAAf82/AAAAAGbAAAAAADNgAAAAAAAAAAAAAAAAAAAAAAAGAAE///ADAAGf//gBwADP//wCcABmAAADmAAz//8C7gAZ//+DMwAMwAAA3YAGf//hZsADP//xu3ABn//4zdgAzDNsNuwAZhu2GzYAMw2bDZsAGYbNhs2ADMNmw2bABmGzYbNgAzDZsdmwAZhs2M3YAMw3d+zcAGYZm+ZsADMOzgd2ABmDM883AAzB3P87AAZgZx47gAMwOcB5gAGYDn/5gADMA4/zwAAAAPADwAAAAD8fgAAAAAf/gAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAB///4AAAD////AAAHwAADwAAHH//8eAAHP///ngAHfgAB8wAHeH/8PcADcf//x3ADsf//+ZgBu8AADu4B2c//8zMA3d///M2AbNwAB2bgduxs2bswP2Z2/O3YGzYzbDZsDZsbths2Bs2Nmw2bA2bGzYbNgbNjZsNmwNmxs2GzYH7c2bHbsDtmbtzdmA2bM3fs3AbMHZnO7AM3BuYOZgHZAzP+dgBmAMx+cwA7gHeAcwAMgB3584AHAAc/84ABgAHHx4AAAAB4D4AAAAAf/wAAAAAD/gAAAAAAAAAAAAAAAAAAZsAAAAAAM2AAAAAAGbAAAAAADNgAAAAABmwAAAAAAzYAAAAAAZsAAAAAAM2AAAAPAGbAAAB/gDNgAAP+ABmwAD/wYAzYAf+D8AZsD/wf8AM2f8D/gAGT/gf8HgAf8D/g/wB/g/8H/AA8H/g/4MAA/8H/B+AH/g/4P+AH4H/B/wADA/4P+AAAH/B/wAAA/4P+AAAAfB/wAAAAAP+AAAAAB/wAAAAAD+AAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAGAAwAAAA/8H/gAAB//v/8AAB4B/APgADz+PP54ABn/x//OABng8eDzAB3HHOcdwA3P9z/nYA7P/d/5mAbOBmYO7ANmebvzNwP3fs392YGzc3ZmbsDZsZsxs2Bs2M2Y2bA2bGbMbNgbNjNmNmwNmxmzGzYGzYzZjZsDZsZsxs2Bs2M2Y2bA2bGbMbNgbNzNmNmwP2Zm7s3YDbv7M+7MBszt3OZuA3MGZwd2ANn/uf8zAGY+zn47gDvAc4A7gA78/Pj5gAOf/z/zwADj8cPjwAA+A/gHgAAH/9//gAAA/4P/AAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAD/4AAAAAHw/AAAAAHADwADAAHP8cABgAHf/nAA4AHeB5gDuAHcfOYAzADc/7uBdwBs8ezBmYBu4DdgbsA2Z924s3AbN+bM3bgfsxt2duwNm4zbG3YGzYZtjZsDZsM2xs2Bs2GbY2bA2bDNsbNgbNhv2NmwP242zO3YHbszbm7sBs3AAHZuA2Z///M2Abuf//O7AGzh/8ObgDc8AA+dgB3P//+dwAdx//8cwAGeAAA8wADn///44AA8///54AAPgAAB4AAB+AAPwAAAP///gAAAA//+AAAAAAAAAAAAAAAAAAAAAAAAAAAADbBmwAAABtgzYAAAA2wZsAAAAbYM2AAAANsGbAAAAG2DNgAAADbBmwAAABtgzYAAAA2wZsAAAAAAAAAAAAAAAAAAA="), 46, atob("DRYpFR0eHiImHygmDQ=="), 49+(scale<<8)+(1<<16));
}
Graphics.prototype.setFontSpecialElite = function(scale) {
// Actual height 40 (39 - 0)
g.setFontCustom(atob("AAAAAAAAAAAAAAAAAAAAAYAAAAAAAfwAAAAAAP/AAAAAAH/4AAAAAB/+AAAAAAf/gAAAAAH/4AAAAAB/+AAAAAAf/gAAAAAH/4AAAAAAv8AAAAAAN6AAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAfAAAAAAAPwAAAAAAP8AAAAAAH+AAAAAAH+AAAAAAD+AAAAAAD/AAAAAAD/AAAAAAB/AAAAAAB/AAAAAAB/AAAAAAB/gAAAAAB/gAAAAAB/gAAAAAA/gAAAAAB/wAAAAAA/4AAAAAA/wAAAAAA/4AAAAAA/4AAAAAAf8AAAAAAP8AAAAAAD8AAAAAAA8AAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//wAAAAP///gAAAH/9/+AAAD/gAf4AAB/AAB+AAA/AAAHwAAPAAAA+AADgAAAPgAAwAAAD4AAcAAAAfAAHAAAAHwABwAAAB8AA4AAAAfAAOAAAAHwABwAAAB8AAcAAAA/AAHgAAAPgAB+AAAH4AAPgAAD8AAD+AAD+AAA/4Af/AAAB////AAAAP///wAAAAP//gAAAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAOAAAAHAADgAAAD4AB4AAAA+AAeAAAAPgAHgAAAD4AB4AAAAeAAeAAAAHgAHgAAAB4AB4AAAAcAAeAAAAPAAH4AAP/wAB/////+AAf/////gAH/////4AB///+/+AAAAQAAPgAAAAAAB4AAAAAAAeAAAAAAAHgAAAAAAD4AAAAAAA+AAAAAAAPgAAAAAADwAAAAAAA+AAAAAAAPgAAAAAAB4AAAAAAAAAAAAAAAAAAAAAAAcAAAB+AAfwAAA/wAf/AAA/8Af/wAAf/AP/8AAGPwP//AADh8D48AAA4OB8OAAAOAAfDgAAHAAPg4AABwADwPAAAcAB8DwAAHAAeAeAABwAHAHgAAcADwB8AAHAB4APgAB4A+AB4AAPAfAAeAAD4fgADgAAf/4AA4AAD/8AAeAAAf+AAfAAAB8AAPwAAAAAAD4AAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/gAAAAAAf8AAB/wAH/wAAf8AB/8AAH+AAffgAB4AcDx4AAcAPAAfAAHAPwAHwABwHwAA8AAcB+AAPAAHA/gADwABw/4AA8AAcf+AAPAAHP/gAHwABz74AB8AAf8fAA/AAH8DwAPgAD/A8AHwAA/gHwP8AAPwA//+AADwAH//AAAAAA//gAAAAAD/wAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAP8AAAAAAD/AAAAAAD/wAAAAAD/8AAAAAB/PAAAAAA/jwAAAAAfg8AAAAAPwPAAAAAH4DwAAAAD4A8HAAAD8APBwAAB+ADw8AAA+AA8PAAA/AAPDgAAPgADw8AAHwAB8/AAD+B///wAA/////8AAP/////AAB+f///wAAAAAHx8AAAAAB8PAAAAAAPDwAAAAADw8AAAAAA4PAAAAAAODwAAAAADgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAB/gAAH//wf8AAB//+H/gAAf//h/4AAHJ/wf/AABwD4D/4AAeA+AAeAAHgPAAHgAB4DwAB4AAeA4AAeAAHgOAAHgAA4DgAB4AAOA8AAeAADgPAAHgAB4D4ADwAAeAeAB4AAHAHwAeAABgAfAPgAAYAD8fgAAAAA//wAAAAAH/4AAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAA//wAAAAB///AAAAB////AAAB/7//wAAA/AfB+AAAfAPAPwAAPgHgB+AAHwBwAPgAB4A8AB8AAeAPAAfAAPADwAHwADgA8AB8AA8APAAfAAPADwAHwADwA8AB8AA8AHgA+AAP8B4APgAD/wfAH4AA/8D4D8AAH/A///AAB/wH//gAAH8A//wAAA8AH/4AAAAAA/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAB/4AAAAAA/8AAAAAAP+AAAAAAD+AAAAAAAeAAAAAAAHAAAAAAADwAAAAAAB8AAAAAAAfAAAAAAAHwAAA/8AD+AAB//AA/gAB//wAP4AB//gAB+AB//AAAfwB//AAAH8A/wAAAA/A/wAAAAHw/wAAAAB8/wAAAAAffwAAAAAP/wAAAAAD/4AAAAAA/4AAAAAAP8AAAAAAD4AAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAP/wAAAH8H/+AAAH/z//wAAD////+AAB///h/gAA/B/gH4AAPAP4A/AAHwB8AHwAB4APAB8AAeADgAfAAHgA4ADwABwAOAA8AAcADgAPAAHAA4ADwAB4AeAA8AAfAHwAPAADwB8AHgAA+A/gD4AAPgP4B+AAB+P/h/gAAP////wAAB/8f/4AAAP8D/8AAAAAAf8AAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAA/4APAAAA//gH4AAAP/8D/gAAP4Pg/8AADwB8P/AAB4AfD/4AAeAD4d+AAHAA+AfwADwAHgH8AA4AA8A/AAOAAPAPgADgADwD4AA8AA4B+AAPAAeAfAAB4AHgHgAAeADwD4AAHwA8A8AAA+AfA/AAAHp/h/gAAA3//+gAAAB//+gAAAAd//gAAAACf/wAAAAAH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAABwB/AAAAB/A/8AAAA/wf/gAAAP+H/4AAAH/h/+AAAB/8f/gAAAP+H/4AAAD/h/+AAAAfwf/gAAAH8C/wAAAAAA3oAAAAAABwAAAAAAAAAAAAAAAAAAAA=="), 46, atob("ERwfHB0cHxsdHB4dEQ=="), 50+(scale<<8)+(1<<16));
}
const SETTINGS_FILE = "pastel.json";
let settings = undefined;
@ -113,6 +123,10 @@ function draw() {
g.setFontCabinSketch();
else if (settings.font == "Orbitron")
g.setFontOrbitron();
else if (settings.font == "Monoton")
g.setFontMonoton();
else if (settings.font == "Elite")
g.setFontSpecialElite();
else
g.setFontLato();

View File

@ -22,14 +22,14 @@
storage.write(SETTINGS_FILE, settings)
}
var font_options = ["Lato","Architect","GochiHand","CabinSketch","Orbitron"];
var font_options = ["Lato","Architect","GochiHand","CabinSketch","Orbitron","Monoton","Elite"];
E.showMenu({
'': { 'title': 'Pastel Clock' },
'< Back': back,
'Font': {
value: 0 | font_options.indexOf(s.font),
min: 0, max: 4,
min: 0, max: 6,
format: v => font_options[v],
onchange: v => {
s.font = font_options[v];

View File

@ -3,4 +3,5 @@
0.03: Close launcher when lcd turn off
0.04: Complete rewrite to add animation and loop ( issue #210 )
0.05: Improve perf
0.06: Complete rewrite in 80x80, better perf, add settings
0.06: Complete rewrite in 80x80, better perf, add settings
0.07: Added suppport for Bangle 2, added README file

22
apps/toucher/README.md Normal file
View File

@ -0,0 +1,22 @@
# Toucher - A touch based launcher, swipe left, switch right, tap to launch
* Designed specifically for Bangle 1 and Bangle 2
## Installation
- Use the App loader to install toucher
- Then delete the existing launcher
- When you restart the new launcher will be loaded
- To return to the default launcher, delete toucher and install the default launcher.
## Bangle 1
In the settings menu 'Low Res' refers to setting the Bangle 1 screen into 80x80 mode.
This significantly improves the animation performance.
## Bangle 2
The Hires/Lowres settings is ignored.
Touch the top third of the screen to launch the selected app.
Press button 1 to launch the selected app.
## Screenshots
![](screenshot1.jpg)

View File

@ -7,8 +7,11 @@ let settings = Storage.readJSON(filename,1) || {
debug: false
};
if(!settings.highres) Bangle.setLCDMode("80x80");
else Bangle.setLCDMode();
// this means that setFont('6x8',1) is actually setFont('6x8',3)
if (process.env.HWVERSION == 1) {
if(!settings.highres) Bangle.setLCDMode("80x80");
else Bangle.setLCDMode();
}
g.clear();
g.flip();
@ -23,7 +26,7 @@ const ORIGINAL_ICON_SIZE = 48;
const STATE = {
settings_open: false,
index: 0,
target: 240,
target: g.getWidth(),
offset: 0
};
@ -63,7 +66,7 @@ const APPS = getApps();
function noIcon(x, y, scale){
if(scale < 0.2) return;
g.setColor(scale, scale, scale);
g.setColor(g.theme.fg);
g.setFontAlign(0,0);
g.setFont('6x8',settings.highres ? 6:3);
g.drawString('x_x', x+1.5, y);
@ -81,23 +84,24 @@ function render(){
g.clear();
const visibleApps = APPS.filter(app => app.x >= STATE.offset-HALF && app.x <= STATE.offset+WIDTH-HALF );
let cycle = 0;
let lastCycle = visibleApps.length;
visibleApps.forEach(app => {
const x = app.x+HALF-STATE.offset;
const y = HALF - (HALF*0.3);
cycle++;
const x = app.x + HALF - STATE.offset;
const y = HALF;
let dist = HALF - x;
if(dist < 0) dist *= -1;
const scale = 1 - (dist / HALF);
if(!scale) return;
if(app.special){
const font = settings.highres ? '6x8' : '4x6';
const fontSize = settings.highres ? 2 : 1;
g.setFont(font, fontSize);
g.setColor(scale,scale,scale);
const fontSize = (process.env.HWVERSION == 2) ? 4 : (settings.highres ? 6 : 2);
g.setFont('6x8', fontSize);
g.setColor(g.theme.fg);
g.setFontAlign(0,0);
g.drawString(app.name, HALF, HALF);
return;
@ -111,26 +115,69 @@ function render(){
if(icon){
icons[app.name] = icon;
try {
const rescale = settings.highres ? scale*ORIGINAL_ICON_SIZE : (scale*(ORIGINAL_ICON_SIZE/2));
const imageScale = settings.highres ? scale*2 : scale;
let rescale;
let imageScale;
if (process.env.HWVERSION == 1) {
// on a bangle 1 !highres means 80x80
rescale = settings.highres ? scale*ORIGINAL_ICON_SIZE : (scale*(ORIGINAL_ICON_SIZE/2));
imageScale = settings.highres ? scale*2 : scale;
} else {
// !highres mode is meaningless on a bangle 2 at present
rescale = 1.25*scale*ORIGINAL_ICON_SIZE;
imageScale = 2.5*scale;
}
g.drawImage(icon, x-rescale, y-rescale, { scale: imageScale });
} catch(e){
} catch(e) {
noIcon(x, y, scale);
}
}else{
} else {
noIcon(x, y, scale);
}
//draw text
g.setColor(scale,scale,scale);
if(scale > 0.1){
const font = settings.highres ? '6x8': '4x6';
const fontSize = settings.highres ? 2 : 1;
g.setFont(font, fontSize);
g.setFontAlign(0,0);
g.drawString(app.name, HALF, HEIGHT/4*3);
}
g.setColor(g.theme.fg);
if (cycle == 2 && scale > 0.1) {
const fontSize = (process.env.HWVERSION == 2) ? 2 : 1;
if (process.env.HWVERSION == 1) {
fontSize = (settings.highres) ? 3 : 1;
}
if (app.name.length <= 12) {
g.setFont("6x8", fontSize);
g.setFontAlign(0,1);
g.drawString(app.name, HALF, HEIGHT);
} else {
// some app names are too long for one line
var name = app.name;
var first = name.substring(0, name.indexOf(" "));
var last = name.substring(name.indexOf(" ") + 1, name.length);
// all this to handle long names like
// Simple 7 Segment Clock
if (last.length > 12 && process.env.HWVERSION == 1) {
g.setFont((settings.highres ? "6x8" : "4x6"),(settings.highres ? 2 : 1) );
} else {
g.setFont("6x8", fontSize);
}
g.setFontAlign(0,-1);
g.drawString(first, HALF, 0);
if (last.length > 12 && process.env.HWVERSION == 1) {
g.setFont((settings.highres ? "6x8" : "4x6"),(settings.highres ? 2 : 1) );
} else {
g.setFont("6x8", fontSize);
}
g.setFontAlign(0,1);
g.drawString(last, HALF, HEIGHT);
}
}
/*
if(settings.highres){
const type = app.type ? app.type : 'App';
const version = app.version ? app.version : '0.00';
@ -138,18 +185,21 @@ function render(){
g.setFontAlign(0,1);
g.setFont('6x8', 1.5);
g.setColor(scale,scale,scale);
g.drawString(info, HALF, 215, { scale: scale });
g.drawString(info, HALF, HEIGHT/8*7, { scale: scale });
}
*/
});
const duration = Math.floor(Date.now()-start);
if(settings.debug){
g.setFontAlign(0,1);
g.setColor(0, 1, 0);
const fontSize = settings.highres ? 2 : 1;
g.setFont('4x6',fontSize);
g.drawString('Render: '+duration+'ms', HALF, HEIGHT);
g.setColor(g.theme.fgH);
const fontSize = (process.env.HWVERSION == 2) ? 2 : (settings.highres ? 2 : 1);
g.setFont(((process.env.HWVERSION == 2) ? '6x8' : (settings.highres ? '6x8' :'4x6')), fontSize);
// steal the bottom line, and print the duration
g.clearRect(0, HEIGHT - (process.env.HWVERSION == 1 && !settings.highres ? 8 : 24), WIDTH, HEIGHT);
g.drawString('Render: '+duration+' ms', HALF, HEIGHT);
}
g.flip();
if(STATE.offset == STATE.target) return;
@ -202,7 +252,7 @@ function run(){
E.showMessage("App Source\nNot found");
setTimeout(render, 2000);
} else {
Bangle.setLCDMode();
if (process.env.HWVERSION == 1) Bangle.setLCDMode();
g.clear();
g.flip();
E.showMessage("Loading...");
@ -211,10 +261,11 @@ function run(){
}
// Screen event
Bangle.on('touch', function(button){
if(STATE.settings_open) return;
switch(button){
if (process.env.HWVERSION == 1) {
// Screen event
Bangle.on('touch', function(button){
if(STATE.settings_open) return;
switch(button){
case 1:
prev();
break;
@ -224,8 +275,17 @@ Bangle.on('touch', function(button){
case 3:
run();
break;
}
});
}
});
}
if (process.env.HWVERSION == 2) {
// tap at top 1/3 of screen to launch app
Bangle.on('touch', function(button, xy) {
if (xy.y < HEIGHT / 3)
run();
});
}
Bangle.on('swipe', dir => {
if(STATE.settings_open) return;
@ -238,9 +298,12 @@ Bangle.on('lcdPower', on => {
if(!on) return load();
});
if (process.env.HWVERSION == 1) {
setWatch(prev, BTN1, { repeat: true });
setWatch(next, BTN3, { repeat: true });
setWatch(run, BTN2, { repeat:true });
} else {
setWatch(run, BTN1, { repeat:true });
}
setWatch(prev, BTN1, { repeat: true });
setWatch(next, BTN3, { repeat: true });
setWatch(run, BTN2, { repeat:true });
jumpTo(1);
jumpTo(1);

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB