# 2007/09/29 Hiroyuki Ogasawara # vim:ts=4 sw=4: # em1key script file # http://www.vector.co.jp/authors/VA004474/ # 「RBK-2000BTII 向け日本語キーボード化設定」 # Bluetooth Keyboard RBK-2000BT2 を日本語配列化します # 日本語キーボードとみなした時の足りないキーを補います。 # このファイルはバージョン更新時に上書きされる可能性があります。 # 書き換えて使っている場合は更新前に必ずバックアップを取っておくように # してください。 # 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 と CapsLock を入れ替える define CSW_CTRL_CAPS_SWAP FALSE # ESC と [全/半] を入れ替える define CSW_ESC_ZENHAN_SWAP FALSE # CTRL+TAB キーでタスク切り替えできるようにする define CSW_CTRLTAB_TASKCHANGE TRUE # SHIFT+[0] で '_' の入力が出来るようになる define CSW_SHIFTZERO_UNDERSCORE TRUE # [DELETE] キーを [\|] キーに置き換える define CSW_DEL_YEN TRUE # CTRL+[BS] キーを [Delete] にする define CSW_CTRLBS_DELETE TRUE # CTRL+[:*] で '_' の入力を可能にする define CSW_CTRLCOLON_UNDERSCORE TRUE # ALT キーで IME の On/Off できるようにする define CSW_ALT_IME TRUE # 下記4つを TRUE にすると、本来のキー位置で [/?] を打てるようになります。 # その代わりカーソルキーの並びが横一列になります。(vi配列と同じ) # # [>.] [↑] [Sft] [/?] # [←] [↓] [→] [Del] # ↓ # [>.] [/?] [Sft] [\|] # [←] [↓] [↑] [→ ] # [DELETE] キーを [→] キーに置き換える define CSW_DEL_RIGHT FALSE # [↑] キーを [/?] キーに変更する define CSW_UP_SLASH FALSE # [→] キーを [↑] キーに変更する define CSW_RIGHT_UP FALSE # [/?] キーを [\|] キーに変更する define CSW_SLASH_YEN FALSE #------------------------------------------------------------------------------ # 初期化関数 #----------------------------------------------------------------------------- # 初期化 起動時に呼ばれる func TABLE_FUNC 0 # 初期化 CLEARALLSTATE WINCMD WINCMD_GETIMEMODE # SystemFlag の初期値を設定 # EMONE/ZERO3 の内蔵キーかどうかの判定を行います。これを off にすると # すべてのキーボードで有効扱いになります。 SETSYSFLAG SYSFLAG_SCANTEST # 初期状態で使用するキーテーブルの選択 # 1=TABLE_DEFAULT # 2=TABLE_EXT SETTABLE 1 # タイトル&ヘルプ設定 string 0 "RBK-2000BT2 用日本語キーボード設定" SETHELP 0 string 0 " 詳しくはマニュアルを参照ください" SETHELP 1 string 0 " [Delete] => [\|]" SETHELP 2 string 0 " Ctrl+[BS] => [Delete]" SETHELP 3 string 0 " Shift+[0] => '_'" SETHELP 4 string 0 " 上記以外も自由に設定できます" SETHELP 5 endfunc #------------------------------------------------------------------------------ # 共通キー定義 #----------------------------------------------------------------------------- # [Ctrl] ステートの記録だけを行う func TABLE_ALLMODE VK_CONTROL TESTSYSFLAG SYSFLAG_SCANVALID IF_TRUE 20 ifsw CSW_CTRL_CAPS_SWAP # Ctrl swap IF_UP 40 RAWDOWN VK_DBE_ALPHANUMERIC EXIT TRUE LABEL 40 RAWUP VK_DBE_ALPHANUMERIC EXIT TRUE endif LABEL 20 # [Ctrl]キーとして実行 IF_UP 10 # down SETGSTATE STATE_CTRL EXIT FALSE LABEL 10 # up RESETGSTATE STATE_CTRL EXIT FALSE endfunc # [英数] ifsw CSW_CTRL_CAPS_SWAP func TABLE_ALLMODE VK_DBE_ALPHANUMERIC TESTSYSFLAG SYSFLAG_SCANVALID IF_TRUE 20 # Ctrl キーとして実行 IF_UP 10 # down SETGSTATE STATE_CTRL RAWDOWN VK_CONTROL EXIT TRUE LABEL 10 # up RESETGSTATE STATE_CTRL RAWUP VK_CONTROL EXIT TRUE LABEL 20 # 内蔵キーでは Ctrl swap しない EXIT FALSE endfunc endif # [ESC] func TABLE_ALLMODE VK_ESCAPE TESTSYSFLAG SYSFLAG_SCANVALID IF_TRUE 20 ifsw CSW_ESC_ZENHAN_SWAP # 全/半 キーとして実行 IF_UP 10 # down RAWDOWN VK_DBE_SBCSCHAR EXIT TRUE LABEL 10 # up RAWUP VK_DBE_SBCSCHAR EXIT TRUE endif LABEL 20 # ESC swap しない EXIT FALSE endfunc ifsw CSW_ESC_ZENHAN_SWAP # [半] func TABLE_ALLMODE VK_DBE_SBCSCHAR TESTSYSFLAG SYSFLAG_SCANVALID IF_TRUE 20 # ESC キーとして実行 IF_UP 10 # down RAWDOWN VK_ESCAPE EXIT TRUE LABEL 10 # up RAWUP VK_ESCAPE EXIT TRUE LABEL 20 EXIT FALSE endfunc # [全] func TABLE_ALLMODE VK_DBE_DBCSCHAR TESTSYSFLAG SYSFLAG_SCANVALID IF_TRUE 20 # ESC キーとして実行 IF_UP 10 # down RAWDOWN VK_ESCAPE EXIT TRUE LABEL 10 # up RAWUP VK_ESCAPE EXIT TRUE LABEL 20 # ESC swap しない EXIT FALSE endfunc endif # [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 # [Tab] キー判定用 # Tab = そのまま # TASK切替 = Ctrl 押しながら # ifsw CSW_CTRLTAB_TASKCHANGE 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 endif # [0] (SHIFT+0 で _ にする) ifsw CSW_SHIFTZERO_UNDERSCORE func TABLE_ALLMODE '0' TESTSYSFLAG SYSFLAG_SCANVALID IF_TRUE 20 IF_SHIFT 30 LABEL 20 EXIT FALSE LABEL 30 IF_UP 40 RAWDOWN VK_OEM_102 EXIT TRUE LABEL 40 RAWUP VK_OEM_102 EXIT TRUE endfunc endif # [Delete] (Delete キーを [\|] に変更) ifsw CSW_DEL_YEN func TABLE_ALLMODE VK_DELETE TESTSYSFLAG SYSFLAG_SCANVALID IF_TRUE 20 # [\|] IF_UP 40 RAWDOWN VK_BACKSLASH EXIT TRUE LABEL 40 RAWUP VK_BACKSLASH EXIT TRUE LABEL 20 EXIT FALSE endfunc endif # [BS] (CTRL + BS で Delete にする) ifsw CSW_CTRLBS_DELETE func TABLE_ALLMODE VK_BACK TESTSYSFLAG SYSFLAG_SCANVALID IF_TRUE 20 IF_CTRL 10 LABEL 20 EXIT FALSE # [DELETE] LABEL 10 IF_UP 40 RAWUP VK_CONTROL RAWDOWN VK_DELETE EXIT TRUE LABEL 40 RAWUP VK_CONTROL RAWUP VK_DELETE EXIT TRUE endfunc endif # [:*] (CTRL+[:*] を _ にする) ifsw CSW_CTRLCOLON_UNDERSCORE func TABLE_ALLMODE VK_APOSTROPHE 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 # [ALT] ifsw CSW_ALT_IME func TABLE_ALLMODE VK_MENU IF_UP 40 RAWUP VK_LMENU WINCMD WINCMD_IMESW # IME の On/Off EXIT TRUE LABEL 40 EXIT TRUE endfunc endif # [Delete] (Delete キーを [→] に変更) ifsw CSW_DEL_RIGHT func TABLE_ALLMODE VK_DELETE TESTSYSFLAG SYSFLAG_SCANVALID IF_TRUE 20 # [\|] IF_UP 40 RAWDOWN VK_RIGHT EXIT TRUE LABEL 40 RAWUP VK_RIGHT EXIT TRUE LABEL 20 EXIT FALSE endfunc endif # [↑] (↑ を [/?] キーにする) ifsw CSW_UP_SLASH func TABLE_ALLMODE VK_UP TESTSYSFLAG SYSFLAG_SCANVALID IF_TRUE 20 IF_UP 40 RAWDOWN VK_SLASH EXIT TRUE LABEL 40 RAWUP VK_SLASH EXIT TRUE LABEL 20 EXIT FALSE endfunc endif # [/] ([/?] を [\|] キーにする) ifsw CSW_SLASH_YEN func TABLE_ALLMODE VK_SLASH TESTSYSFLAG SYSFLAG_SCANVALID IF_TRUE 20 IF_UP 40 RAWDOWN VK_BACKSLASH EXIT TRUE LABEL 40 RAWUP VK_BACKSLASH EXIT TRUE LABEL 20 EXIT FALSE endfunc endif # [→] ([→] を [↑] キーにする) ifsw CSW_RIGHT_UP func TABLE_ALLMODE VK_RIGHT TESTSYSFLAG SYSFLAG_SCANVALID IF_TRUE 20 IF_UP 40 RAWDOWN VK_UP EXIT TRUE LABEL 40 RAWUP VK_UP EXIT TRUE LABEL 20 EXIT FALSE endfunc endif #----------------------------------------------------------------------------- #-----------------------------------------------------------------------------