QESS is a spread sheet application for Android smart phone focusing on effective entry. It has editable keypads.
キーパッドのレイアウトは自由に編集できます。 ここでは、アプリに含まれる以下のレイアウトのサンプルファイルについて、使い方やコマンド列の意味を説明します。 具体的なレイアウトファイルの記述内容は、それぞれのファイルをExcel等の表計算ソフトで開いて確認してください。
QESSでは、設定から「レイアウト編集モード」にチェックを入れると見ることができます。
Excel等で拡張子が「.csv」であるファイルを編集した場合、CSV形式(カンマ区切り)ではなくTSV形式(タブ区切り)で保存される場合があります。 タブ区切りに変わっている場合は、拡張子を「.tsv」に変えて下さい。
sampleScoring | 5段階評価を、上から順に入れます。 |
sampleAttendance | 出欠記録を、上から順に入れます。 |
sampleChecking | チェックマークを追加・削除します。 |
sampleCounter | 何かを計数します。 |
sampleCounter2 | 何かを3つに分類して計数します。 |
sampleLogging | 履歴を記録します。 |
sampleQuestionnaire | アンケートを記入します。 |
sampleCashcalc | 小遣い帳電卓を実現します。 |
sampleMultimodal | 音声認識入力、QRコード/バーコード入力、QRコード出力、位置情報取得入力、テキスト読み上げを試すものです。 |
sampleCommands | 様々なコマンドを試すものです。 |
sampleJump | 条件付き実行やループを試すものです。 |
sampleFormula | 数式の実行を試すものです。SUM,COUNTは範囲の両隅を指定してから実行します。 |
sampleJavaScript | JavaScriptの実行を試すものです。 |
sampleRpnCalc | RPN電卓をJavaScriptを使って実現します。 |
sampleLogCalc | 履歴付き電卓をJavaScriptを使って実現します。 |
nullKeypad | キーパッドを表示しません。 |
sampleBasicCalc | 基本電卓を実現します。 |
sampleSciCalc | 関数電卓を実現します。 |
sampleMenuCmd | コマンド<MENU menuItem>の使用例を示します。 |
sampleKeyShortcut | 物理キーボード接続時に有用なキーショートカット設定の例です。 |
各キーをタッチすると、キーの文字列が現在セルに入ります。「Clear」では空文字が入ります。 そして現在セルが一つ下に移動します。
* ここでは英語モードのサンプルを使っています。 日本語モードのサンプルでは、「Excellent」「Good」「Average」「Fair」「Poor」を 「秀」「優」「良」「可」「不可」と変更していますので、読み替えてください。
「Excellent」と表記しているキーはレイアウトファイルにおいて以下のように記述しています。
ButtonText | Excellent |
ButtonCommand | <CLR>Excellent<DOWN> |
コマンドの意味 | 現在セルの内容を消去→現在セルに文字列「Excellent」を追加→下のセルへ移動 |
「Clear」では文字列の追加が抜けています。
ButtonText | Clear |
ButtonCommand | <CLR><DOWN> |
コマンドの意味 | 現在セルの内容を消去→下のセルへ移動 |
各キーをタッチすると、キーの文字列が現在セルに入ります。「Clear」では空文字が入ります。 そして現在セルが一つ下に移動します。
* ここでは英語モードのサンプルを使っています。 日本語モードのサンプルでは、「Attend」「Abcent」「Late」「Clear」を 「出席」「欠席」「遅刻」「クリア」と変更していますので、読み替えてください。
上記のsampleScoringとよく似た記述です。例えば、「Excellent」と表記しているキーはレイアウトファイルにおいて以下のように記述しています。
ButtonText | Attend |
ButtonCommand | <CLR>Att.<DOWN> |
コマンドの意味 | 現在セルの内容を消去→現在セルに文字列「Att.」を追加→下のセルへ移動 |
「Chk」キーをタッチすると、チェックマーク1つを現在セルに追加します。 「Unchk」キーは現在セルのチェックマーク1つを外します。 矢印キーは現在セルを移動します。
レイアウトファイルに以下のように記述しています。
ButtonText | Chk | Unchk |
ButtonCommand | ✓ | <BS> |
コマンドの意味 | 「✓」マークを現在セルに追加 | 最後の1文字を消去する(BackSpace) |
移動に関するキーは以下のように記述されています。
ButtonText | < | ^ | > | v |
ButtonCommand | <LEFT> | <UP> | <RIGHT> | <DOWN> |
コマンドの意味 | 左セルへ移動 | 上セルへ移動 | 右セルへ移動 | 下セルへ移動 |
「+」キーは現在セルの値をインクリメント(プラス1)します。 「-」キーはデクリメント(マイナス1)します。 「CLR」キーは現在セルの内容を消去します。
「+」キーは、レイアウトファイルにおいて以下のように記述しています。
ButtonText | + |
ButtonCommand | +1<EVAL> |
コマンドの意味 | 文字列「+1」を現在セルに追加→算術式として評価 |
現在セルの内容が「2」だった時には、文字列追加で「2+1」となり、それを評価することで、セルの値は「3」となります。 現在セルの内容が空だった時は、文字列追加で「+1」となり、それを評価することで、セルの値は「1」となります。 「-」キーの記述は「+1」が「-1」に代わります。「CLR」キーは現在セルの内容を消去するコマンド「<CLR>」が記述されています。
「A」、「B」、「C」の各列の「+」、「-」キーは、スプレッドシート上のA,B,C列第一行の値をインクリメント・デクリメントします。 「Clr」は3つのセルの内容を消去します。
左上の「+」キーは、レイアウトファイルに以下のように記述しています。
ButtonText | + |
ButtonCommand | <GO A1>+1<EVAL> |
コマンドの意味 | A1セルに移動→「+1」を追加→算術式として評価 |
上記のsampleCounterと同じ処理にセル移動が加わっています。 他の「+」「-」キーの記述は、増減+/-と移動先A1/B1/C1が異なります。
「Start」キーは、startの文字列と入力した時間を横並びのセルに入れます。 「Stop」キーは、stopの文字列と入力した時間を横並びのセルに入れます。 「Clear」キーは、現在セルの内容を消去します。
「Start」キーはレイアウトファイルに以下のように記述しています。
ButtonText | Start |
ButtonCommand | <CLR>start<RIGHT><CLR><NOW TIME><DOWN><LEFT> |
コマンドの意味 | 現在セルをクリア→文字列「start」をセルに追加→右に移動→セルをクリア→現在時間をセルに追加→下に移動→左に移動 |
「Sex」「Age」「Q1」「Q2」「Q3」「Q4」の各キーは、設問と答えの候補を表示し、利用者の回答をセルに入れます。 「Sex」「Age」については、回答の文字列そのものを入れます。 「Q1」「Q2」「Q3」「Q4」については回答のインデックス番号を入れます。 「AnswerAll」では、全ての設問と回答を順に繰り返します。
「Sex」キーはレイアウトファイルに以下のように記述しています。
ButtonText | Sex |
ButtonCommand | <GO RC1><CLR><LIST Sex> |
コマンドの意味 | RC1セル(同じ行の第1列)に移動→セルをクリア→名称がSexのリストを表示し、選択した項目を現在セルに追加 |
ここで使うリストは、同じレイアウトファイルに以下のように記述します。
Sex | Male or Female? | Male | Female | Other |
「Q1」以降のキーでは、<LIST name>の代わりに<LISTN name>を使っているため、 セルに入るのはインデックス番号(ゼロ開始)になります。 「AnswerAll」キーには、これらのキーのコマンドを順に並べて記述しています。
一般的な電卓です。また「Memo」を使うと支出の項目と日付が入力できます。 「M+」(Memory Plus)、「M-」(Memory Minus)、「MR」(Memory Recall)、「MC」(Memory Clear)はメモリ機能です。E1セルにメモリ値を表示します。
レイアウトファイルにおいて、数字、演算子、小数点、括弧のキーは、そのままの記述です。 キーをタッチすると、その文字をセルに追加することで算術式を作成します。
ButtonText | 7 | 8 | 9 | \u2797 |
ButtonCommand | 7 | 8 | 9 | / |
コマンドの意味 | 「7」を追加 | 「8」を追加 | 「9」を追加 | 「/」を追加 |
ただし「.」は、数値型のセルに追加しても表示が変化しないので、セルを文字列型にしてから追加します。 「0」も同様の理由で、セルを文字列型にしてから追加します。
ButtonText | 0 | . |
ButtonCommand | <TYPE STR>0 | <TYPE STR>. |
コマンドの意味 | セルを文字列型に変更→「0」を追加 | セルを文字列型に変更→「.」を追加 |
「=」キーは、セルの移動と算術式の評価を行います。
ButtonText | = |
ButtonCommand | <RIGHT><CLR><EVAL R[0]C[-1]><DOWN><LEFT> |
コマンドの意味 | 右セルへ移動→セルをクリア→左セルを評価→下セルへ移動→左セルへ移動 |
「Memo」キーは支出項目と日付を入れます。
ButtonText | Memo |
ButtonCommand | <CLR><LIST Expenses><RIGHT><CLR><NOW DATE> |
コマンドの意味 | セルをクリア→リストExpensesを表示して選択項目を入力→右セルに移動→セルをクリア→今日の日付を入力 |
Expenses | expenses | foods | commodity | recreation | closes | ... |
「M+」「M-」「MR」「MC」のキーは、電卓のメモリ機能を実現します。
ButtonText | M+ |
ButtonCommand | <SETV @val><GO E1><CLR><GET @mem>+<GET @val><EVAL><SETV @mem><GO BACK><DOWN> |
コマンドの意味 | セル値を変数@valにセット→E1セルに移動→セルをクリア→変数@memを得てセルに追加→文字「+」をセル追加→変数@valの値を得てセルに追加→セルを評価→セル値を変数@memにセット→直前セルへ戻る→下セルへ移動 |
メモリ機能はJavaScriptによる記述に変更しました。
「VoiceIn」は音声認識入力です。「VoiceInSeq」はその繰り返しです。 「QRcodeIn」はQRコード入力です。「QRcodeOut」はQRコード出力です。 「Location」は位置情報入力です。現在位置の緯度経度を「37.421998333333335,-122.08400000000002」の形で入力します。 検出にはGPSまたはNetworkを使います。Network使用の方が低消費電力で低精度です。 「TripMemo」は位置情報と日時、およびVoice認識によるメモの入力です。 「WebSearch」は、現在セルの内容をWeb(GoogleSearch)で検索します。 緯度経度のセルで実行すると地図を、URLのセルで実行すると対応ページを表示します。 「SpeakOut」は現在セルの内容を読み上げます。範囲指定があれば範囲内を読み上げます。
ButtonText | VoiceIn | QRcodeIn | Location | WebSearch |
ButtonCommand | <VOICE><DOWN> | <QRCODE><DOWN> | <LOCATION><DOWN> | <WEB><DOWN> |
コマンドの意味 | 音声認識入力→下セルへ移動 | QRcode入力→下セルへ移動 | 位置情報入力→下セルへ移動 | 現在セル内容をWeb検索→下セルへ移動 |
「VoiceInSeq」では、繰り返しループの中に上記の「VoiceIn」の処理を入れています。 「QRCODE OUT」は、該当のコマンドを実行します。
ButtonText | VoiceInSeq | QRcodeOut |
ButtonCommand | <LBL a><VOICE><DOWN><JMP a> | <QRCODE OUT> |
コマンドの意味 | ラベルaをセット→音声認識入力→下セルへ移動→ラベルaへ飛ぶ | QRコード出力 |
「TripMemo」は、位置情報入力、日時入力、音声認識入力をセルを移動しながら順に実行します。「SpeakOut」は該当コマンドを実行します。
ButtonText | TripMemo | SpeakOut |
ButtonCommand | <LOCATION><RIGHT><NOW DATETIME><RIGHT><VOICE><GO R[1]C[-2]> | <SPEAK> |
コマンドの意味 | 位置情報入力→右セルへ移動→日時入力→右セルへ移動→音声認識入力→1つ下、2つ左のセルに移動 | テキストを読み上げる |
各種のコマンドを試します。
レイアウトファイルには、キーに表示しているコマンドを記述しています。コマンドの意味はHelpを見てください。 なお矢印表示にはUnicodeを使っています。
各種の条件分岐の例を試します。
「If=A1 Then」は条件成立時にのみ処理する条件分岐の例です。 現在セルの内容がA1セルと等しいときに「Same」と表示し、等しくない場合は何もしません。
「If =A1 Then Else」は、条件成立と不成立の時に別々の処理を行う条件分岐の例です。 現在セルの内容がA1セルと等しいときに「Same」と表示し、等しくない場合は「Diff」と表示します。
「For x=1,10」は一定回数ループの例です。現在セルから縦に10個のセルに、文字列「AA」を入れます。
もう一つの「For x=1,10」は、現在セルから縦に10個のセルに、数値をインクリメントしながら入れます。
「For x=1,3;y=1,5」は2重ループの例です。現在セルから縦に5個、横に3個のセルに文字列「AA」を入れます。
「While x<=10」は、不定回数ループの例です。変数が10になるまでインクリメントしながら繰り返します。
「If=A1 Then」と表示のキーはレイアウトファイルで以下のように記述しています。
ButtonText | If =A1 Then |
ButtonCommand | <JNE A1 x><RIGHT><CLR>Same<LBL x> |
コマンドの意味 | 現在セルがA1セルと等しくないならばラベルxへジャンプ→ 右セルへ移動→セルをクリア→文字列「Same」をセルに追加→ラベルx |
「If =A1 Then Else」と表示のキーはレイアウトファイルで以下のように記述しています。
ButtonText | If =A1 Then Else |
ButtonCommand | <JNE A1 x><RIGHT><CLR>Same<JMP y><LBL x><RIGHT><CLR>Diff<LBL y> |
コマンドの意味 | 現在セルがA1セルと等しくないならばラベルxへジャンプ→ 右セルへ移動→セルをクリア→文字列「Same」をセルに追加→ラベルyへジャンプ→ ラベルx→右セルへ移動→セルをクリア→文字列「Diff」をセルに追加→ラベルy |
「For x=1,10」と表示のキーはレイアウトファイルで以下のように記述しています。
ButtonText | For x=1,10 |
ButtonCommand | <JLMT x 10><LBL x><CLR>AA<DOWN><JMP x> |
コマンドの意味 | ラベルxへのジャンプ回数を10に制限→ラベルx→セルをクリア →文字列「AA」をセルに追加→下セルへ移動→ラベルxへジャンプ |
もう一つの「For x=1,10」と表示のキーはレイアウトファイルで以下のように記述しています。
ButtonText | For x=1,10 |
ButtonCommand | <CLR>1<JLMT x 9><LBL x><DOWN><CLR>R[-1]C+1<EVAL><JMP x> |
コマンドの意味 | セルをクリア→「1」をセルに追加→ラベルxへのジャンプ回数を9に制限 →ラベルx→下セルへ移動→セルをクリア→文字列「R[-1]C+1」をセルに追加→ セルを評価→ラベルxへジャンプ |
「For x=1,3;y=1,5」と表示のキーはレイアウトファイルで以下のように記述しています。
ButtonText | For x=1,3;y=1,5 |
ButtonCommand | <SETR @s><JLMT x 3><LBL x><JLMT y 5> <LBL y><CLR>AA<DOWN><JMP y><GO @s><RIGHT><SETR @s><JMP x> |
コマンドの意味 | 現在セルの参照文字列(例:A1)を変数@sにセット→ラベルxへのジャンプ回数を3に制限 →ラベルx→ラベルyへのジャンプ回数を5に制限→ラベルy→セルをクリア→文字列「AA」を追加→ 下セルへ移動→ラベルyへジャンプ→変数@sの参照するセルへ移動→右セルへ移動→ 現在セル参照を変数@sにセット→ラベルxへジャンプ |
「While x<=10」と表示のキーはレイアウトファイルで以下のように記述しています。
ButtonText | While x<=10 |
ButtonCommand | <GO B1><CLR>10<GO BACK><CLR>0<JLMT x 100> <LBL x><DOWN><CLR>R[-1]C + 1<EVAL><JLT B1 x> |
コマンドの意味 | B1セルに移動→セルをクリア→文字列「10」を追加→元のセルへ戻る→ セルをクリア→文字列「0」を追加→ラベルxへのジャンプ回数を100に制限→ラベルx→ 下セルへ移動→セルをクリア→「R[-1]C+1」を追加→セルを評価→現在セルの値がB1セルより小さいならばラベルxへジャンプ |
各種のExcel数式の例を試します。
「f(cell)」は、現在セルに対してリストから選択したExcel数式を適用します。
「Set Corners」は領域を指定します。領域の片隅でキータッチ、もう一方の片隅で再度キータッチします。下の「f(range),f(rows),f(cols)」を行う前に領域を設定します。
「Help」は、ヘルプを表示します。
「f(range)」は、指定した領域に対してリストから選択したExcel数式を適用します。
「f(rows)」は、指定した領域に含まれる行に対してリストから選択したExcel数式を適用します。
「f(cols)」は、指定した領域に含まれる列に対してリストから選択したExcel数式を適用します。
「f(cell)」キーはレイアウトファイルで以下のように記述しています。
ButtonText | f(cell) |
ButtonCommand | <SETV @x><CLR><LIST cellfunc>(<GET @x>)<TYPE FRML> |
Meaning | Set cell value to @x→Clear the cell→Show list 'cellfunc' (and wait the input)→add '('→Get @x and add to the cell→add ')'→Change cell type to formula |
セルの文字列は、「cellfunc + '(' + @x + ')'」のように作られます。 ここで「cellfunc」は 下のように定義したリストから選択します。
cellfunc | Cell Functions | sqrt | sin | cos | tan | asin | acos | atan | exp | ln | log | log10 |
「Set Corners」キーはレイアウトファイルで以下のように記述しています。
ButtonText | Set Corners |
ButtonCommand | <CLR><RANGE> |
Meaning | Start/end the assignment of the range |
「f(range/rows/cols)」キーは「f(cell)」キーと類似の記述です。
JavaScriptとDialogの例を試します。
解説はHelpを参照してください。
RPN(Reverse Polish Notation)形式の電卓を実現します。 RPNは演算子を後置する記法であり、HP電卓で使われました。 「2+3」を「2 3 +」と表記します。 この電卓では「[2] [Enter] [3] [+]」とタッチして計算します。 関数群はレイアウトファイルで編集できます。
履歴付きの電卓を実現します。 演算毎に1行を使って結果を記録します。 関数群はレイアウトファイルで編集できます。
キーパッドが無表示になります。キーパッドが不要な時に選択します。
単純な基本電卓を実現します。 演算式、演算結果ともに現在セルを使います。 算術式を使って実現しています。
関数電卓を実現します。 演算式、演算結果ともに現在セルを使います。 関数と定数の一覧はレイアウトファイルで編集できます。 Excel数式を使って実現しています。
<MENU menuItem>の使用例を示します。
キーパッドは何も表示しません。キーショートカットのみを定義しています。 物理キーボードを接続したときに有用です。
具体的なショートカットは、レイアウト編集モード(メニュー>設定で選択)で確認して下さい。 「Ctrl+C」(コピー)、「Ctrl+V」(貼り付け)、「Alt+M」(オプションメニュー表示) などを記述しています。
レイアウトを考案したらメールでお知らせ頂けると幸いです。有用なレイアウトは、このページで公開します。