UNPKG

mz700-js

Version:
223 lines (209 loc) 9.23 kB
"use strict"; /* tslint:disable:class-name max-classes-per-file no-bitwise */ class mzkey { strobe; bit; face; code; strcode; constructor(strobe, bit, face?, code?, strcode?) { this.strobe = strobe; this.bit = bit; this.face = face || "&nbsp;"; this.code = code || []; this.strcode = strcode || face; } } // // MZ-700 Key Matrix // export default class MZ700KeyMatrix { keymap; constructor() { this.keymap = new Array(10).fill(0xff); } getKeyData(strobe:number):number { let keydata = 0xff; strobe &= 0x0f; if (strobe < this.keymap.length) { keydata = this.keymap[strobe]; } return keydata; } setKeyMatrixState(strobe:number, bit:number, state:boolean):void { if (state) { // clear bit this.keymap[strobe] &= ((~(1 << bit)) & 0xff); } else { // set bit this.keymap[strobe] |= ((1 << bit) & 0xff); } } static KeyCodes = { "Escape" : 27, "F1" : 112, "F2" : 113, "F3" : 114, "F4" : 115, "F5" : 116, "F6" : 117, "F7" : 118, "F8" : 119, "F9" : 120, "F10" : 121, "F11" : 122, "F12" : 123, "Numlock" : 44, "ScrollLock" : 145, "Pause" : 19, "D0" : 48, "D1" : 49, "D2" : 50, "D3" : 51, "D4" : 52, "D5" : 53, "D6" : 54, "D7" : 55, "D8" : 56, "D9" : 57, "A" : 65, "B" : 66, "C" : 67, "D" : 68, "E" : 69, "F" : 70, "G" : 71, "H" : 72, "I" : 73, "J" : 74, "K" : 75, "L" : 76, "M" : 77, "N" : 78, "O" : 79, "P" : 80, "Q" : 81, "R" : 82, "S" : 83, "T" : 84, "U" : 85, "V" : 86, "W" : 87, "X" : 88, "Y" : 89, "Z" : 90, "Subtract" : 109, "Caret" : 107, "Atmark" : 192, "Yen" : 106, "Colon" : 186, "SemiColon" : 187, "Comma" : 188, "Decimal" : 190, "Divide" : 111, "Backslash" : 226, "OpenBrackets" : 219, "CloseBrackets" : 221, "Shift" : 16, "Control" : 17, "Alternate" : 18, "Enter" : 13, "Tab" : 9, "Space" : 32, "Backspace" : 8, "Insert" : 45, "Delete" : 46, "Home" : 36, "End" : 35, "PageUp" : 33, "PageDown" : 34, "Left" : 37, "Up" : 38, "Right" : 39, "Down" : 40, "NumPad0" : 96, "NumPad1" : 97, "NumPad2" : 98, "NumPad3" : 99, "NumPad4" : 100, "NumPad5" : 101, "NumPad6" : 102, "NumPad7" : 103, "NumPad8" : 104, "NumPad9" : 105, "NumPadDivide" : 191, "NumPadMultiply" : 220, "NumPadSubtract" : 189, "NumPadPlus" : 222, "NumPadDecimal" : 110, "Hankaku" : 243, "Zenkaku" : 244 }; static Keys = [ new mzkey(0,0,"CR", [MZ700KeyMatrix.KeyCodes.Enter]), new mzkey(0,1,":", [MZ700KeyMatrix.KeyCodes.Colon]), new mzkey(0,2,";", [MZ700KeyMatrix.KeyCodes.SemiColon]), new mzkey(0,3), new mzkey(0,4,"英数", [MZ700KeyMatrix.KeyCodes.F10, MZ700KeyMatrix.KeyCodes.End], "ALNUM"), new mzkey(0,5,"=", [MZ700KeyMatrix.KeyCodes.Backspace]), new mzkey(0,6,"GRAPH", [MZ700KeyMatrix.KeyCodes.F12, MZ700KeyMatrix.KeyCodes.PageDown, MZ700KeyMatrix.KeyCodes.Alternate], "GRAPH"), new mzkey(0,7,"カナ", [MZ700KeyMatrix.KeyCodes.F11, MZ700KeyMatrix.KeyCodes.PageUp], "KANA"), new mzkey(1,0), new mzkey(1,1), new mzkey(1,2), new mzkey(1,3,")", [MZ700KeyMatrix.KeyCodes.CloseBrackets]), new mzkey(1,4,"(", [MZ700KeyMatrix.KeyCodes.OpenBrackets]), new mzkey(1,5,"@", [MZ700KeyMatrix.KeyCodes.Atmark]), new mzkey(1,6,"Z", [MZ700KeyMatrix.KeyCodes.Z]), new mzkey(1,7,"Y", [MZ700KeyMatrix.KeyCodes.Y]), new mzkey(2,0,"X", [MZ700KeyMatrix.KeyCodes.X]), new mzkey(2,1,"W", [MZ700KeyMatrix.KeyCodes.W]), new mzkey(2,2,"V", [MZ700KeyMatrix.KeyCodes.V]), new mzkey(2,3,"U", [MZ700KeyMatrix.KeyCodes.U]), new mzkey(2,4,"T", [MZ700KeyMatrix.KeyCodes.T]), new mzkey(2,5,"S", [MZ700KeyMatrix.KeyCodes.S]), new mzkey(2,6,"R", [MZ700KeyMatrix.KeyCodes.R]), new mzkey(2,7,"Q", [MZ700KeyMatrix.KeyCodes.Q]), new mzkey(3,0,"P", [MZ700KeyMatrix.KeyCodes.P]), new mzkey(3,1,"O", [MZ700KeyMatrix.KeyCodes.O]), new mzkey(3,2,"N", [MZ700KeyMatrix.KeyCodes.N]), new mzkey(3,3,"M", [MZ700KeyMatrix.KeyCodes.M]), new mzkey(3,4,"L", [MZ700KeyMatrix.KeyCodes.L]), new mzkey(3,5,"K", [MZ700KeyMatrix.KeyCodes.K]), new mzkey(3,6,"J", [MZ700KeyMatrix.KeyCodes.J]), new mzkey(3,7,"I", [MZ700KeyMatrix.KeyCodes.I]), new mzkey(4,0,"H", [MZ700KeyMatrix.KeyCodes.H]), new mzkey(4,1,"G", [MZ700KeyMatrix.KeyCodes.G]), new mzkey(4,2,"F", [MZ700KeyMatrix.KeyCodes.F]), new mzkey(4,3,"E", [MZ700KeyMatrix.KeyCodes.E]), new mzkey(4,4,"D", [MZ700KeyMatrix.KeyCodes.D]), new mzkey(4,5,"C", [MZ700KeyMatrix.KeyCodes.C]), new mzkey(4,6,"B", [MZ700KeyMatrix.KeyCodes.B]), new mzkey(4,7,"A", [MZ700KeyMatrix.KeyCodes.A]), new mzkey(5,0,"8", [MZ700KeyMatrix.KeyCodes.D8, MZ700KeyMatrix.KeyCodes.NumPad8]), new mzkey(5,1,"7", [MZ700KeyMatrix.KeyCodes.D7, MZ700KeyMatrix.KeyCodes.NumPad7]), new mzkey(5,2,"6", [MZ700KeyMatrix.KeyCodes.D6, MZ700KeyMatrix.KeyCodes.NumPad6]), new mzkey(5,3,"5", [MZ700KeyMatrix.KeyCodes.D5, MZ700KeyMatrix.KeyCodes.NumPad5]), new mzkey(5,4,"4", [MZ700KeyMatrix.KeyCodes.D4, MZ700KeyMatrix.KeyCodes.NumPad4]), new mzkey(5,5,"3", [MZ700KeyMatrix.KeyCodes.D3, MZ700KeyMatrix.KeyCodes.NumPad3]), new mzkey(5,6,"2", [MZ700KeyMatrix.KeyCodes.D2, MZ700KeyMatrix.KeyCodes.NumPad2]), new mzkey(5,7,"1", [MZ700KeyMatrix.KeyCodes.D1, MZ700KeyMatrix.KeyCodes.NumPad1]), new mzkey(6,0,".", [MZ700KeyMatrix.KeyCodes.Decimal, 110]), new mzkey(6,1,",", [MZ700KeyMatrix.KeyCodes.Comma]), new mzkey(6,2,"9", [MZ700KeyMatrix.KeyCodes.D9, MZ700KeyMatrix.KeyCodes.NumPad9]), new mzkey(6,3,"0", [MZ700KeyMatrix.KeyCodes.D0, MZ700KeyMatrix.KeyCodes.NumPad0]), new mzkey(6,4,"SPC", [MZ700KeyMatrix.KeyCodes.Space], " "), new mzkey(6,5,"-", [MZ700KeyMatrix.KeyCodes.Subtract, MZ700KeyMatrix.KeyCodes.NumPadSubtract]), new mzkey(6,6,"+", [MZ700KeyMatrix.KeyCodes.Caret, MZ700KeyMatrix.KeyCodes.NumPadPlus]), new mzkey(6,7,"*", [MZ700KeyMatrix.KeyCodes.Yen, MZ700KeyMatrix.KeyCodes.NumPadMultiply]), new mzkey(7,0,"/", [MZ700KeyMatrix.KeyCodes.Divide, MZ700KeyMatrix.KeyCodes.NumPadDivide]), new mzkey(7,1,"?", [MZ700KeyMatrix.KeyCodes.Backslash]), new mzkey(7,2,"←", [MZ700KeyMatrix.KeyCodes.Left], "LEFT"), new mzkey(7,3,"→", [MZ700KeyMatrix.KeyCodes.Right], "RIGHT"), new mzkey(7,4,"↓", [MZ700KeyMatrix.KeyCodes.Down], "DOWN"), new mzkey(7,5,"↑", [MZ700KeyMatrix.KeyCodes.Up], "UP"), new mzkey(7,6,"DEL", [MZ700KeyMatrix.KeyCodes.Delete]), new mzkey(7,7,"INS", [MZ700KeyMatrix.KeyCodes.Insert]), new mzkey(8,0,"SHIFT", [MZ700KeyMatrix.KeyCodes.Shift]), new mzkey(8,1,"(BS)"), new mzkey(8,2), new mzkey(8,3,"(→)", [MZ700KeyMatrix.KeyCodes.Tab]), new mzkey(8,4,"(CR)"), new mzkey(8,5,"(SHIFT)"), new mzkey(8,6,"CTRL", [MZ700KeyMatrix.KeyCodes.Control]), new mzkey(8,7,"BREAK", [MZ700KeyMatrix.KeyCodes.Escape,MZ700KeyMatrix.KeyCodes.Pause]), new mzkey(9,0,"HOME", [MZ700KeyMatrix.KeyCodes.Home]), new mzkey(9,1,"(SPC)"), new mzkey(9,2,"(↓)"), new mzkey(9,3,"F5", [MZ700KeyMatrix.KeyCodes.F5]), new mzkey(9,4,"F4", [MZ700KeyMatrix.KeyCodes.F4]), new mzkey(9,5,"F3", [MZ700KeyMatrix.KeyCodes.F3]), new mzkey(9,6,"F2", [MZ700KeyMatrix.KeyCodes.F2]), new mzkey(9,7,"F1", [MZ700KeyMatrix.KeyCodes.F1]) ]; static KeyNames = ((obj) => { Object.keys(MZ700KeyMatrix.KeyCodes).forEach((name) => { const code = MZ700KeyMatrix.KeyCodes[name]; obj[code] = name; }); return obj; })({}); static Code2Key = (() => { const code2key = new Array(256); MZ700KeyMatrix.Keys.forEach((key) => { key.code.forEach((code) => { code2key[code] = key; }); }); return code2key; })(); static Str2Key = (() => { const s2key = {}; MZ700KeyMatrix.Keys.forEach((key) => { s2key[key.strcode] = key; }); return s2key; })(); } module.exports = MZ700KeyMatrix;