キー入力のシフトモードの制御方法を設定します。

構文

short SetKeyinputMode(
  short mode
);

パラメータ

mode
[in] シフトモードの制御方法を指定します。
説明
ORIGINAL_SHIFT_MODE キーを押すとすぐにキーが確定します。
ALTERNATE_SHIFT_MODE 入力候補文字を表示し、SetKeyinputTimer関数で指定した時間が経過すると入力文字を確定します。
入力候補文字の表示中に[0][1][2][3][4][5][6][7][8][9][.]キーを押すと入力文字を確定し、次のカラムに押したキーの入力候補文字を表示します。
入力候補文字の表示中に[SHIFT]キーを押すと、入力文字をキャンセルします。
※このパラメータはレガシーです。新規にソフトウェアを作成される際は、ALTERNATE_SHIFT_MODE2をご使用ください。
ALTERNATE_SHIFT_MODE2 入力候補文字を表示し、SetKeyinputTimer関数で指定した時間が経過すると入力文字を確定します。
入力候補文字の表示中に[0][1][2][3][4][5][6][7][8][9][.]キーを押すと入力文字を確定し、次のカラムに押したキーの入力候補文字を表示します。
入力候補文字の表示中に[SCAN][Q1][Q2][CLR][SHIFT][ENT][BS][F1][F2][F3]キーを押すと、入力文字を確定します。
MANUAL_SHIFT_MODE OSによるキー入力のシフトモードの制御を無効にします。
CURRENT_MODE 現在のシフトモードの制御方法を返します。

戻り値

 本関数が設定を変更した後のシフトモードの制御方法を返します。

解説

 MANUAL_SHIFT_MODEを設定すると、 [SHIFT]キーを押したときSHIFT_KEYキーコードを受け取ります。キーコードの詳細はキーコードを参照してください。

必要条件

ヘッダファイル:
lib.h
ライブラリファイル:
libSTARTUPOPH5000.a
OSバージョン:
TH15J06以降

サンプル

#include <stdio.h>
#include "lib.h"


#define TIME_UNIT          500
#define SHOW_TIME_MIN      0
#define SHOW_TIME_MAX      5

#define CURSOR_COLOR       RGB_GREEN

extern void PrintChar(unsigned char);
extern void PrintSymbol(unsigned int);

static const char *shifttime[] = 
{
    "KINPUT_CHECK_MIN", 
    "1000            ", 
    "1500            ", 
    "KINPUT_CHECK_MAX",
};

static const char *shiftmode[] = 
{
    "ORIGINAL_SHIFT_MODE ",
    "ALTERNATE_SHIFT_MODE2"
};
static unsigned short input_time;
static unsigned short output_time;

static void TimePrint(void)
{
    GotoXY(1, 4);
    printf("                      ");
    GotoXY(1, 4);
    printf("%s\r\n", shifttime[input_time]);
    SetKeyinputTimer((input_time + 1) * TIME_UNIT);
    GotoXY(1, 5);
    printf("                      ");
    GotoXY(1, 5);
    output_time = SetKeyinputTimer(1);
    printf("INPUT TIME = %d\r\n", output_time);
}

void main(void)
{
    char c;
    unsigned char exit_flg;
    unsigned char mode_flg;
    int i;
    unsigned long save_bcolor;

    GotoXY(1, 1);
    printf("SHIFT Mode\r\n");

    i = 1;
    exit_flg = 0;
    mode_flg = ALTERNATE_SHIFT_MODE2;
    SetKeyinputMode(mode_flg);
    input_time = 0;
    SetKeyinputTimer(input_time * TIME_UNIT);

    GotoXY(1, 3);
    printf("%s", shiftmode[mode_flg]);
    GotoXY(1, 4);
    TimePrint();
    GotoXY(1, 5);
    output_time = SetKeyinputTimer(1);
    printf("INPUT TIME = %d\r\n", output_time);
    save_bcolor = SetBackColor(-1L);
    SetBackColor(CURSOR_COLOR);
    GotoXY(i, 7);
    PrintSymbol('_');

    while(1)
    {
        if (kbhit())
        {
            c = getchar();

            switch(c)
            {
            case BS_KEY:
                exit_flg = 1;
                break;

            case F1_KEY:
            case SHIFT_F1_KEY:
                SetBackColor(save_bcolor);
                GotoXY(1, 3);
                printf("                      ");
                if (mode_flg == ALTERNATE_SHIFT_MODE2)
                {
                    mode_flg = ORIGINAL_SHIFT_MODE;
                }
                else
                {
                    mode_flg = ALTERNATE_SHIFT_MODE2;
                }
                GotoXY(1, 3);
                printf("%s", shiftmode[mode_flg]);
                SetKeyinputMode(mode_flg);
                SetBackColor(CURSOR_COLOR);
                GotoXY(i, 7);
                PrintSymbol('_');
                break;

            case F2_KEY:
            case SHIFT_F2_KEY:
                SetBackColor(save_bcolor);
                if (input_time == SHOW_TIME_MAX)
                {
                    input_time = SHOW_TIME_MIN; 
                }
                else
                {
                    input_time++; 
                }
                TimePrint();
                SetBackColor(CURSOR_COLOR);
                GotoXY(i, 7);
                PrintSymbol('_');
                break;

            case F3_KEY:
            case SHIFT_F3_KEY:
                SetBackColor(save_bcolor);
                if (input_time == SHOW_TIME_MIN)
                {
                    input_time = SHOW_TIME_MAX; 
                }
                else
                {
                    input_time--; 
                }
                TimePrint();
                SetBackColor(CURSOR_COLOR);
                GotoXY(i, 7);
                PrintSymbol('_');
                break;

            default:
                GotoXY(i, 7);
                if (c >= 0x20 && c < 0x80)
                {
                    SetBackColor(save_bcolor);
                    PrintSymbol(c);
                    i++;
                    if (i == 10) i = 1;
                    SetBackColor(CURSOR_COLOR);
                    GotoXY(i, 7);
                    PrintSymbol('_');
                }
                break;
            }
        }
        if (exit_flg == 1) break;
        Idle();
    }
    GotoXY(1, 9);
    printf("Test Done!!\r\n");

    while(1)
    {
        Idle();
    }
}

最終更新日:2022/08/05