# 2007/09/29 Hiroyuki Ogasawara # vim:ts=4 sw=4: # em1key script file # http://www.vector.co.jp/authors/VA004474/ # 「RBK-2100BTJ 向け設定」 # Bluetooth Keyboard RBK-2100BTJ でのキー補正を行います。 # このファイルはバージョン更新時に上書きされる可能性があります。 # 書き換えて使っている場合は更新前に必ずバックアップを取っておくように # してください。 # vim:ts=4 sw=4: #------------------------------------------------------------------------------ # system 用共通シンボル定義ヘッダ #------------------------------------------------------------------------------ # ここは書き換えないでください # system ヘッダ部分の最終更新日 2007/05/15 # script の詳しい説明はこちらです。 # http://flatlib.main.jp/dench/vec/more/em1keyscript.txt # opcode #define CODEEXIT 0 define EXIT 1 define RETURN 2 define JUMP 3 define JUMPALL 4 define LABEL 5 define CALL 6 define CALLVAR 7 define SETMODIFIER 8 define SENDKEY 9 define SENDVAR 10 define RAWDOWN 11 define RAWUP 12 define EXEC 13 define WINCMD 14 define ROTATE 15 define CLEARALLSTATE 16 define SAVETIME 17 define SETDIFFTIME 18 define SETGSTATE 19 define RESETGSTATE 20 define ALLOCVSTATE 21 define SETVSTATE 22 define RESETVSTATE 23 define SETSYSFLAG 24 define RESETSYSFLAG 25 define TESTSYSFLAG 26 define TESTGSTATE 27 define TESTVSTATE 28 define DOWNVAR 29 define UPVAR 30 # define SETVAR0 32 define SETVAR1 33 define SETVAR2 34 define SETVAR3 35 define LOADVAR 36 define STOREVAR 37 define LOAD 38 #define STRINGDATA 39 #define STRINGID 40 define MESSAGE 41 define SETTABLE 42 define LOADIVAR 43 define STOREIVAR 44 define PUSHVAR 45 define POPVAR 46 define PUSHIMM 47 define IF_DOWN 48 define IF_UP 49 define IF_DIFFTIME 50 define IF_TRUE 51 define IF_FALSE 52 define IF_VSTATE0 53 define IF_VSTATE1 54 define IF_VSTATE2 55 define IF_VSTATE3 56 define IF_CTRL 57 define IF_SHIFT 58 define IF_RWIN 59 define IF_GSTATE3 60 define CMP_EQ 61 define CMP_LT 62 define CMP_GT 63 define ADDVAR 64 define SUBVAR 65 define ANDVAR 66 define ORVAR 67 define XORVAR 68 define ADD 69 define SUB 70 define AND 71 define OR 72 define XOR 73 define MULVAR 74 define DIVVAR 75 define MODVAR 76 define SLVAR 77 define SRVAR 78 define CMPVAR_EQ 79 define CMPVAR_LT 80 define CMPVAR_GT 81 define CALLVARDEF 82 define CALLVAREXT 83 define SETHELP 84 # constant define TRUE 1 define FALSE 0 # GSTATE define STATE_CTRL 0 define STATE_SHIFT 1 define STATE_RWIN 2 define STATE_KANATABLE 8 # VSTATE define VSTATE_0 0 define VSTATE_1 1 define VSTATE_2 2 # GVAR define GVAR_SAVETIME 33 define GVAR_DIFFTIME 34 define GVAR_MODIFIER 35 define GVAR_KEYCODE 37 define GVAR_EVENTTIME 38 define GVAR_TABLE 40 # Modifier define MOD_CTRL 0x01 define MOD_SHIFT 0x02 define MOD_RWIN 0x10 define MOD_KANA 0x20 define MOD_KANASHIFT 0x22 # Function Table define TABLE_FUNC 1 define TABLE_DEFAULT 2 define TABLE_EXT 4 define TABLE_KANA 4 define TABLE_ALLMODE 6 define TABLEID_FUNC 0 define TABLEID_DEFAULT 1 define TABLEID_EXT 2 # SystemFlag define SYSFLAG_CTRLSWAP 0 define SYSFLAG_ESCSWAP 1 define SYSFLAG_IMESW 2 define SYSFLAG_SCANTEST 3 define SYSFLAG_NAVIMODE 4 define SYSFLAG_IME 16 define SYSFLAG_SCANVALID 17 define SYSFLAG_SCANANY 18 # WINCMD define WINCMD_CLOSE 0x41 define WINCMD_ALTTAB 0x42 define WINCMD_IMESW 0x43 define WINCMD_GETIMEMODE 0x44 # KeyCode define VK_BACK 0x08 # [BS] define VK_TAB 0x09 # [TAB] define VK_CLEAR 0x0c define VK_RETURN 0x0d # [Enter] define VK_SHIFT 0x10 # [Shift] define VK_CONTROL 0x11 # [Ctrl] define VK_MENU 0x12 # [ALT](CE) define VK_PAUSE 0x13 define VK_CAPITAL 0x14 define VK_KANA 0x15 define VK_KANJI 0x19 # [Kanji] define VK_ESCAPE 0x1b # [ESC] define VK_CONVERT 0x1c # [変換] define VK_NCONVERT 0x1d # [無変換] define VK_SPACE 0x20 # [Space] define VK_PRIOR 0x21 # [PageUp] define VK_NEXT 0x22 # [PageDown] define VK_END 0x23 # [End] define VK_HOME 0x24 # [Home] define VK_LEFT 0x25 # [←] define VK_UP 0x26 # [↑] define VK_RIGHT 0x27 # [→] define VK_DOWN 0x28 # [↓] define VK_SELECT 0x29 define VK_PRINT 0x2a define VK_EXECUTE 0x2b define VK_SNAPSHOT 0x2c # [PrintScreen] define VK_INSERT 0x2d define VK_DELETE 0x2e # [Del] define VK_HELP 0x2f # '0'〜'9' 'A'〜'Z' はそのまま記述します define VK_LWIN 0x5b # [Win] define VK_RWIN 0x5c # RWIN define VK_F1 0x70 # 左SoftKey define VK_F2 0x71 # 右SoftKey define VK_F3 0x72 define VK_F4 0x73 define VK_F5 0x74 define VK_F6 0x75 # RWIN+F6 = [OK] define VK_F7 0x76 # RWIN+F7 = [Moji] define VK_F8 0x77 define VK_F9 0x78 define VK_F10 0x79 define VK_F11 0x7a define VK_F12 0x7b define VK_F13 0x7c define VK_F14 0x7d define VK_F15 0x7e define VK_F16 0x7f define VK_F17 0x80 define VK_F18 0x81 define VK_F19 0x82 define VK_F20 0x83 define VK_F21 0x84 define VK_F22 0x85 define VK_F23 0x86 define VK_F24 0x87 define VK_NUMLOCK 0x90 define VK_SCROLL 0x91 # [ScrollLock] define VK_LSHIFT 0xa0 # pc only define VK_RSHIFT 0xa1 # pc only define VK_LCONTROL 0xa2 # pc only define VK_RCONTROL 0xa3 # pc only define VK_LMENU 0xa4 # [ALT] define VK_RMENU 0xa5 ifce define VK_SEMICOLON 0xba # CE keyb [;+] define VK_EQUAL 0xbb # CE keyb [^~] define VK_APOSTROPHE 0xde # CE keyb [:*] endif ifpc define VK_OEM_1 0xba # PC [:*] define VK_OEM_PLUS 0xbb # PC [;+] define VK_OEM_MINUS 0xbd # PC [-=] define VK_OEM_7 0xde # PC [^~] define VK_SEMICOLON 0xbb # PC [;+] (CE互換用) define VK_EQUAL 0xde # PC [^~] (CE互換用) define VK_APOSTROPHE 0xba # PC [:*] (CE互換用) endif define VK_HYPHEN 0xbd # [-=] define VK_COMMA 0xbc # [,;] define VK_PERIOD 0xbe # [.:] define VK_SLASH 0xbf # [/?] define VK_BACKQUOTE 0xc0 # [@`] define VK_APP1 0xc1 define VK_APP2 0xc2 define VK_APP3 0xc3 define VK_APP4 0xc4 define VK_APP5 0xc5 define VK_APP6 0xc6 define VK_LBRACKET 0xdb # [[{] define VK_BACKSLASH 0xdc # [\|] define VK_RBRACKET 0xdd # []}] (us:\|) define VK_APOSTROPHE 0xde # define VK_OFF 0xdf # define VK_OEM_102 0xe2 # [ _] define VK_DBE_ALPHANUMERIC 0xf0 # [英数/Caps] define VK_DBE_KATAKANA 0xf1 # define VK_DBE_HIRAGANA 0xf2 # [かな] define VK_DBE_SBCSCHAR 0xf3 # [半] define VK_DBE_DBCSCHAR 0xf4 # [全] define VK_DBE_ROMAN 0xf5 # define VK_DBE_NOROMAN 0xf6 # #------------------------------------------------------------------------------ # system 用シンボル定義ヘッダここまで #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ # ここからスクリプトのプログラム開始 #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ # 各種カスタマイズ設定 #------------------------------------------------------------------------------ # CTRL+[/?] で '_' の入力を可能にする define CSW_CTRLSLASH_UNDERSCORE TRUE # CTRL+Enter で [OK] の入力を可能にする define CSW_CTRLENTER_OK TRUE # CTRL+[1] で [F1] の入力を可能にする define CSW_CTRL1_F1 TRUE # CTRL+[2] で [F2] の入力を可能にする define CSW_CTRL2_F2 TRUE # CTRL+[3] を [タスク切り替え] にする define CSW_CTRL3_APPTASK TRUE # CTRL+[4] で [アプリ終了] にする define CSW_CTRL4_APPCLOSE TRUE #------------------------------------------------------------------------------ # 初期化関数 #----------------------------------------------------------------------------- # 初期化 起動時に呼ばれる func TABLE_FUNC 0 # 初期化 CLEARALLSTATE WINCMD WINCMD_GETIMEMODE # SystemFlag の初期値を設定 # 初期状態で使用するキーテーブルの選択 SETTABLE TABLEID_DEFAULT SETSYSFLAG SYSFLAG_SCANTEST # タイトル&ヘルプ設定 string 0 "RBK-2100BTJ 用キーボード設定" SETHELP 0 string 0 " 詳しくはマニュアルを参照ください" SETHELP 1 string 0 " Ctrl+Enter => OK Ctrl+[/?] => '_'" SETHELP 2 string 0 " C+rl+[1] => 左ソフト C+rl+[2] => 右ソフト" SETHELP 3 string 0 " C+rl+[3] => タスク切り替え" SETHELP 4 string 0 " Ctrl+[4] => アプリ終了" SETHELP 5 endfunc #------------------------------------------------------------------------------ # 共通キー定義 #----------------------------------------------------------------------------- # [Ctrl] ステートの記録だけを行う func TABLE_ALLMODE VK_CONTROL IF_UP 10 # down SETGSTATE STATE_CTRL EXIT FALSE LABEL 10 # up RESETGSTATE STATE_CTRL EXIT FALSE endfunc # [RWIN] ステートの記録だけを行う # 特殊キー判定用 func TABLE_ALLMODE VK_RWIN IF_UP 10 # down SETGSTATE STATE_RWIN EXIT FALSE LABEL 10 # up RESETGSTATE STATE_RWIN EXIT FALSE endfunc # [Shift] ステートの記録だけを行う func TABLE_ALLMODE VK_SHIFT IF_UP 10 # down SETGSTATE STATE_SHIFT EXIT FALSE LABEL 10 # up RESETGSTATE STATE_SHIFT EXIT FALSE endfunc # [/?] (CTRL+[/?] を _ にする) ifsw CSW_CTRLSLASH_UNDERSCORE func TABLE_ALLMODE VK_SLASH TESTSYSFLAG SYSFLAG_SCANVALID IF_TRUE 20 IF_CTRL 10 LABEL 20 EXIT FALSE # [_] LABEL 10 IF_UP 40 RAWUP VK_CONTROL RAWDOWN VK_SHIFT RAWDOWN VK_OEM_102 EXIT TRUE LABEL 40 RAWUP VK_CONTROL RAWUP VK_OEM_102 RAWUP VK_SHIFT EXIT TRUE endfunc endif # [1] (CTRL+[1] を [F1] にする) ifsw CSW_CTRL1_F1 func TABLE_ALLMODE '1' TESTSYSFLAG SYSFLAG_SCANVALID IF_TRUE 20 IF_CTRL 10 LABEL 20 EXIT FALSE # [OK] LABEL 10 IF_UP 40 RAWUP VK_CONTROL RAWUP VK_SHIFT RAWDOWN VK_F1 EXIT TRUE LABEL 40 RAWUP VK_CONTROL RAWUP VK_SHIFT RAWUP VK_F1 EXIT TRUE endfunc endif # [2] (CTRL+[2] を [F2] にする) ifsw CSW_CTRL2_F2 func TABLE_ALLMODE '2' TESTSYSFLAG SYSFLAG_SCANVALID IF_TRUE 20 IF_CTRL 10 LABEL 20 EXIT FALSE # [OK] LABEL 10 IF_UP 40 RAWUP VK_CONTROL RAWUP VK_SHIFT RAWDOWN VK_F2 EXIT TRUE LABEL 40 RAWUP VK_CONTROL RAWUP VK_SHIFT RAWUP VK_F2 EXIT TRUE endfunc endif # [Enter] (CTRL+Enter を [OK] にする) ifsw CSW_CTRLENTER_OK func TABLE_ALLMODE VK_RETURN TESTSYSFLAG SYSFLAG_SCANVALID IF_TRUE 20 IF_CTRL 10 LABEL 20 EXIT FALSE # [OK] LABEL 10 IF_UP 40 RAWUP VK_CONTROL RAWUP VK_SHIFT RAWDOWN VK_RWIN RAWDOWN VK_F6 EXIT TRUE LABEL 40 RAWUP VK_CONTROL RAWUP VK_SHIFT RAWUP VK_F6 RAWUP VK_RWIN EXIT TRUE endfunc endif # [F3] (CTRL+[3] を [タスク切り替え] にする) ifsw CSW_CTRL3_APPTASK func TABLE_ALLMODE '3' IF_VSTATE0 20 # すでに送信済みなら TESTSYSFLAG SYSFLAG_SCANVALID IF_TRUE 20 IF_CTRL 10 LABEL 20 EXIT FALSE # [APPCLOSE] LABEL 10 IF_UP 40 RAWUP VK_CONTROL RAWUP VK_SHIFT SETVSTATE 0 WINCMD WINCMD_ALTTAB EXIT TRUE LABEL 40 RAWUP VK_CONTROL RAWUP VK_SHIFT RESETVSTATE 0 EXIT TRUE endfunc endif # [4] (CTRL+[4] を [アプリ終了] にする) ifsw CSW_CTRL4_APPCLOSE func TABLE_ALLMODE '4' IF_VSTATE0 20 # すでに送信済みなら TESTSYSFLAG SYSFLAG_SCANVALID IF_TRUE 20 IF_CTRL 10 LABEL 20 EXIT FALSE # [APPCLOSE] LABEL 10 IF_UP 40 RAWUP VK_CONTROL RAWUP VK_SHIFT SETVSTATE 0 WINCMD WINCMD_CLOSE EXIT TRUE LABEL 40 RAWUP VK_CONTROL RAWUP VK_SHIFT RESETVSTATE 0 EXIT TRUE endfunc endif # [Tab] キー判定用 # # Tab = そのまま # TASK切替 = Ctrl 押しながら # func TABLE_ALLMODE VK_TAB IF_CTRL 10 IF_UP 40 # down # ctrl なしの KEYDOWN は素通り SETVSTATE VSTATE_0 # 素通りしたことを保存 EXIT FALSE LABEL 10 # ctrl 併用時 IF_VSTATE0 30 # through (あとから Ctrl が押されたケースを識別) IF_UP 20 WINCMD WINCMD_ALTTAB # Task Change EXIT TRUE LABEL 20 # key up # 何もしない RESETVSTATE VSTATE_0 EXIT TRUE LABEL 30 IF_UP 40 EXIT FALSE LABEL 40 RESETVSTATE VSTATE_0 EXIT FALSE endfunc #----------------------------------------------------------------------------- #-----------------------------------------------------------------------------