Demo
This commit is contained in:
parent
239f9136ec
commit
6ebedf3bbe
|
@ -0,0 +1,41 @@
|
|||
# Configure with [fxsdk build-fx] or [fxsdk build-cg], which provide the
|
||||
# toolchain file and module path of the fxSDK
|
||||
|
||||
cmake_minimum_required(VERSION 3.15)
|
||||
project(MyAddin)
|
||||
|
||||
include(GenerateG1A)
|
||||
include(GenerateG3A)
|
||||
include(Fxconv)
|
||||
find_package(Gint 2.9 REQUIRED)
|
||||
|
||||
set(SOURCES
|
||||
src/main.c
|
||||
# ...
|
||||
)
|
||||
# Shared assets, fx-9860G-only assets and fx-CG-50-only assets
|
||||
set(ASSETS
|
||||
# ...
|
||||
)
|
||||
set(ASSETS_fx
|
||||
assets-fx/example.png
|
||||
# ...
|
||||
)
|
||||
set(ASSETS_cg
|
||||
assets-cg/example.png
|
||||
# ...
|
||||
)
|
||||
|
||||
fxconv_declare_assets(${ASSETS} ${ASSETS_fx} ${ASSETS_cg} WITH_METADATA)
|
||||
|
||||
add_executable(myaddin ${SOURCES} ${ASSETS} ${ASSETS_${FXSDK_PLATFORM}})
|
||||
target_compile_options(myaddin PRIVATE -Wall -Wextra -Os)
|
||||
target_link_libraries(myaddin Gint::Gint)
|
||||
|
||||
if("${FXSDK_PLATFORM_LONG}" STREQUAL fx9860G)
|
||||
generate_g1a(TARGET myaddin OUTPUT "Keydemo.g1a"
|
||||
NAME "Keydemo" ICON assets-fx/icon.png)
|
||||
elseif("${FXSDK_PLATFORM_LONG}" STREQUAL fxCG50)
|
||||
generate_g3a(TARGET myaddin OUTPUT "Keydemo.g3a"
|
||||
NAME "Keydemo" ICONS assets-cg/icon-uns.png assets-cg/icon-sel.png)
|
||||
endif()
|
Binary file not shown.
After Width: | Height: | Size: 3.7 KiB |
|
@ -0,0 +1,3 @@
|
|||
example.png:
|
||||
type: bopti-image
|
||||
name: img_example
|
Binary file not shown.
After Width: | Height: | Size: 8.2 KiB |
Binary file not shown.
After Width: | Height: | Size: 4.5 KiB |
Binary file not shown.
After Width: | Height: | Size: 3.5 KiB |
|
@ -0,0 +1,3 @@
|
|||
example.png:
|
||||
type: bopti-image
|
||||
name: img_example
|
Binary file not shown.
After Width: | Height: | Size: 7.3 KiB |
|
@ -0,0 +1,301 @@
|
|||
/*
|
||||
* SuperInput demo - A new way to type text on casio fx calculators !
|
||||
* Copyright (C) 2022 Mibi88
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see https://www.gnu.org/licenses/.
|
||||
*/
|
||||
|
||||
#include <gint/display.h>
|
||||
#include <gint/keyboard.h>
|
||||
|
||||
#define INSZ 20
|
||||
#define INSZS1 (INSZ-1)
|
||||
|
||||
unsigned char input[INSZ], keyc;
|
||||
int pos, lenght, shift, alpha, inchar, key;
|
||||
|
||||
void shiftstrpartright(int start){
|
||||
unsigned char c;
|
||||
unsigned char copy[INSZ];
|
||||
for(int i=0;i<INSZ;i++){
|
||||
copy[i] = input[i];
|
||||
}
|
||||
for(int i=start;i<INSZS1;i++){
|
||||
c = copy[i];
|
||||
input[i+1] = c;
|
||||
}
|
||||
}
|
||||
void shiftstrpartleft(int start){
|
||||
unsigned char c;
|
||||
for(int i=start;i<INSZS1;i++){
|
||||
c = input[i+1];
|
||||
input[i] = c;
|
||||
}
|
||||
input[INSZS1] = ' ';
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
for(int i=0;i<INSZ;i++){
|
||||
input[i] = ' ';
|
||||
}
|
||||
pos = 0;
|
||||
lenght = 0;
|
||||
shift = 0;
|
||||
alpha = 1;
|
||||
key = 0;
|
||||
clearevents();
|
||||
int opt = 0xDC;
|
||||
while(!keydown(KEY_EXIT)){
|
||||
key = getkey_opt(opt, NULL).key;
|
||||
inchar = 1;
|
||||
keyc = ' ';
|
||||
if(alpha){
|
||||
if(!shift){
|
||||
switch(key){
|
||||
case KEY_SQUARE:
|
||||
keyc = '\''; break;
|
||||
case KEY_POWER:
|
||||
keyc = '^'; break;
|
||||
case KEY_XOT:
|
||||
keyc = 'a'; break;
|
||||
case KEY_LOG:
|
||||
keyc = 'b'; break;
|
||||
case KEY_LN:
|
||||
keyc = 'c'; break;
|
||||
case KEY_SIN:
|
||||
keyc = 'd'; break;
|
||||
case KEY_COS:
|
||||
keyc = 'e'; break;
|
||||
case KEY_TAN:
|
||||
keyc = 'f'; break;
|
||||
case KEY_FRAC:
|
||||
keyc = 'g'; break;
|
||||
case KEY_FD:
|
||||
keyc = 'h'; break;
|
||||
case KEY_LEFTP:
|
||||
keyc = 'i'; break;
|
||||
case KEY_RIGHTP:
|
||||
keyc = 'j'; break;
|
||||
case KEY_COMMA:
|
||||
keyc = 'k'; break;
|
||||
case KEY_ARROW:
|
||||
keyc = 'l'; break;
|
||||
case KEY_7:
|
||||
keyc = 'm'; break;
|
||||
case KEY_8:
|
||||
keyc = 'n'; break;
|
||||
case KEY_9:
|
||||
keyc = 'o'; break;
|
||||
case KEY_4:
|
||||
keyc = 'p'; break;
|
||||
case KEY_5:
|
||||
keyc = 'q'; break;
|
||||
case KEY_6:
|
||||
keyc = 'r'; break;
|
||||
case KEY_MUL:
|
||||
keyc = 's'; break;
|
||||
case KEY_DIV:
|
||||
keyc = 't'; break;
|
||||
case KEY_1:
|
||||
keyc = 'u'; break;
|
||||
case KEY_2:
|
||||
keyc = 'v'; break;
|
||||
case KEY_3:
|
||||
keyc = 'w'; break;
|
||||
case KEY_ADD:
|
||||
keyc = 'x'; break;
|
||||
case KEY_SUB:
|
||||
keyc = 'y'; break;
|
||||
case KEY_0:
|
||||
keyc = 'z'; break;
|
||||
case KEY_DOT:
|
||||
keyc = ' '; break;
|
||||
case KEY_EXP:
|
||||
keyc = '"'; break;
|
||||
case KEY_NEG:
|
||||
keyc = '_'; break;
|
||||
case KEY_EXE:
|
||||
keyc = '\n'; break;
|
||||
default:
|
||||
inchar = 0; break;
|
||||
};
|
||||
}else{
|
||||
switch(key){
|
||||
case KEY_SQUARE:
|
||||
keyc = '!'; break;
|
||||
case KEY_POWER:
|
||||
keyc = '?'; break;
|
||||
case KEY_XOT:
|
||||
keyc = 'A'; break;
|
||||
case KEY_LOG:
|
||||
keyc = 'B'; break;
|
||||
case KEY_LN:
|
||||
keyc = 'C'; break;
|
||||
case KEY_SIN:
|
||||
keyc = 'D'; break;
|
||||
case KEY_COS:
|
||||
keyc = 'E'; break;
|
||||
case KEY_TAN:
|
||||
keyc = 'F'; break;
|
||||
case KEY_FRAC:
|
||||
keyc = 'G'; break;
|
||||
case KEY_FD:
|
||||
keyc = 'H'; break;
|
||||
case KEY_LEFTP:
|
||||
keyc = 'I'; break;
|
||||
case KEY_RIGHTP:
|
||||
keyc = 'J'; break;
|
||||
case KEY_COMMA:
|
||||
keyc = 'K'; break;
|
||||
case KEY_ARROW:
|
||||
keyc = 'L'; break;
|
||||
case KEY_7:
|
||||
keyc = 'M'; break;
|
||||
case KEY_8:
|
||||
keyc = 'N'; break;
|
||||
case KEY_9:
|
||||
keyc = 'O'; break;
|
||||
case KEY_4:
|
||||
keyc = 'P'; break;
|
||||
case KEY_5:
|
||||
keyc = 'Q'; break;
|
||||
case KEY_6:
|
||||
keyc = 'R'; break;
|
||||
case KEY_MUL:
|
||||
keyc = 'S'; break;
|
||||
case KEY_DIV:
|
||||
keyc = 'T'; break;
|
||||
case KEY_1:
|
||||
keyc = 'U'; break;
|
||||
case KEY_2:
|
||||
keyc = 'V'; break;
|
||||
case KEY_3:
|
||||
keyc = 'W'; break;
|
||||
case KEY_ADD:
|
||||
keyc = 'X'; break;
|
||||
case KEY_SUB:
|
||||
keyc = 'Y'; break;
|
||||
case KEY_0:
|
||||
keyc = 'Z'; break;
|
||||
case KEY_DOT:
|
||||
keyc = ' '; break;
|
||||
case KEY_EXP:
|
||||
keyc = '#'; break;
|
||||
case KEY_NEG:
|
||||
keyc = '$'; break;
|
||||
case KEY_EXE:
|
||||
keyc = '\n'; break;
|
||||
default:
|
||||
inchar = 0; break;
|
||||
};
|
||||
}
|
||||
}else{
|
||||
switch(key){
|
||||
case KEY_SQUARE:
|
||||
keyc = '%'; break;
|
||||
case KEY_POWER:
|
||||
keyc = '\\'; break;
|
||||
case KEY_XOT:
|
||||
keyc = '{'; break;
|
||||
case KEY_LOG:
|
||||
keyc = '}'; break;
|
||||
case KEY_LN:
|
||||
keyc = '['; break;
|
||||
case KEY_SIN:
|
||||
keyc = ']'; break;
|
||||
case KEY_COS:
|
||||
keyc = '~'; break;
|
||||
case KEY_TAN:
|
||||
keyc = '@'; break;
|
||||
case KEY_FRAC:
|
||||
keyc = '<'; break;
|
||||
case KEY_FD:
|
||||
keyc = '>'; break;
|
||||
case KEY_LEFTP:
|
||||
keyc = '('; break;
|
||||
case KEY_RIGHTP:
|
||||
keyc = ')'; break;
|
||||
case KEY_COMMA:
|
||||
keyc = ','; break;
|
||||
case KEY_ARROW:
|
||||
keyc = '='; break;
|
||||
case KEY_7:
|
||||
keyc = '7'; break;
|
||||
case KEY_8:
|
||||
keyc = '8'; break;
|
||||
case KEY_9:
|
||||
keyc = '9'; break;
|
||||
case KEY_4:
|
||||
keyc = '4'; break;
|
||||
case KEY_5:
|
||||
keyc = '5'; break;
|
||||
case KEY_6:
|
||||
keyc = '6'; break;
|
||||
case KEY_MUL:
|
||||
keyc = '*'; break;
|
||||
case KEY_DIV:
|
||||
keyc = '/'; break;
|
||||
case KEY_1:
|
||||
keyc = '1'; break;
|
||||
case KEY_2:
|
||||
keyc = '2'; break;
|
||||
case KEY_3:
|
||||
keyc = '3'; break;
|
||||
case KEY_ADD:
|
||||
keyc = '+'; break;
|
||||
case KEY_SUB:
|
||||
keyc = '-'; break;
|
||||
case KEY_0:
|
||||
keyc = '0'; break;
|
||||
case KEY_DOT:
|
||||
keyc = '.'; break;
|
||||
case KEY_EXP:
|
||||
keyc = ';'; break;
|
||||
case KEY_NEG:
|
||||
keyc = '|'; break;
|
||||
case KEY_EXE:
|
||||
keyc = '\n'; break;
|
||||
default:
|
||||
inchar = 0; break;
|
||||
};
|
||||
}
|
||||
if(inchar && lenght < INSZS1){
|
||||
shiftstrpartright(pos);
|
||||
input[pos] = keyc;
|
||||
pos++;
|
||||
lenght++;
|
||||
}
|
||||
if(key == KEY_LEFT && pos > 0){
|
||||
pos--;
|
||||
}else if(key == KEY_RIGHT && pos < lenght){
|
||||
pos++;
|
||||
}
|
||||
if(key == KEY_SHIFT){
|
||||
shift = !shift;
|
||||
}else if(key == KEY_ALPHA){
|
||||
alpha = !alpha;
|
||||
}else if(key == KEY_DEL && pos > 0){
|
||||
shiftstrpartleft(pos-1);
|
||||
lenght--;
|
||||
pos--;
|
||||
}
|
||||
dclear(C_WHITE);
|
||||
dtext(1, 1, C_BLACK, (char*)input);
|
||||
dline(pos*6, 1, pos*6, 7, C_BLACK);
|
||||
dupdate();
|
||||
clearevents();
|
||||
}
|
||||
return 1;
|
||||
}
|
Loading…
Reference in New Issue