danoniplus 30.4.0 → 30.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/js/danoni_main.js +92 -34
- package/js/lib/danoni_constants.js +57 -42
- package/package.json +1 -1
package/js/danoni_main.js
CHANGED
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Source by tickle
|
|
6
6
|
* Created : 2018/10/08
|
|
7
|
-
* Revised : 2023/03/
|
|
7
|
+
* Revised : 2023/03/12
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 30.
|
|
12
|
-
const g_revisedDate = `2023/03/
|
|
11
|
+
const g_version = `Ver 30.5.0`;
|
|
12
|
+
const g_revisedDate = `2023/03/12`;
|
|
13
13
|
const g_alphaVersion = ``;
|
|
14
14
|
|
|
15
15
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
@@ -387,6 +387,19 @@ const copyArray2d = _array2d => structuredClone(_array2d);
|
|
|
387
387
|
*/
|
|
388
388
|
const sumData = _array => _array.reduce((p, x) => p + x);
|
|
389
389
|
|
|
390
|
+
/**
|
|
391
|
+
* 最小配列長の配列を作成
|
|
392
|
+
* @param {array} _array
|
|
393
|
+
* @param {number} _minLength
|
|
394
|
+
* @param {number} _defaultVal
|
|
395
|
+
* @returns
|
|
396
|
+
*/
|
|
397
|
+
const makeBaseArray = (_array, _minLength, _defaultVal) => {
|
|
398
|
+
const baseArray = [...Array(_minLength)].fill(_defaultVal);
|
|
399
|
+
_array.forEach((val, j) => baseArray[j] = val);
|
|
400
|
+
return baseArray;
|
|
401
|
+
};
|
|
402
|
+
|
|
390
403
|
/**
|
|
391
404
|
* 部分一致検索(リストのいずれかに合致、大小文字問わず)
|
|
392
405
|
* @param {string} _str 検索文字
|
|
@@ -3442,9 +3455,25 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
|
|
|
3442
3455
|
const toNumber = _num => parseInt(_num, 10);
|
|
3443
3456
|
const toFloat = _num => parseFloat(_num);
|
|
3444
3457
|
const toStringOrNumber = _str => isNaN(Number(_str)) ? _str : toNumber(_str);
|
|
3445
|
-
const
|
|
3458
|
+
const toKeyCtrlArray = _str => makeBaseArray(_str.split(`/`).map(n => toNumber(n)), g_keyObj.minKeyCtrlNum, 0);
|
|
3446
3459
|
const toSplitArrayStr = _str => _str.split(`/`).map(n => n);
|
|
3447
3460
|
|
|
3461
|
+
/**
|
|
3462
|
+
* キーパターン(相対パターン)をキーパターン(実際のパターン番号)に変換
|
|
3463
|
+
* 例) 12_(0) -> 12_4
|
|
3464
|
+
* それ以外の文字列が来た場合は、そのままの値を戻す
|
|
3465
|
+
* @param {string} _str
|
|
3466
|
+
* @returns
|
|
3467
|
+
*/
|
|
3468
|
+
const getKeyPtnName = _str => {
|
|
3469
|
+
const regex = /\((\d+)\)/;
|
|
3470
|
+
const checkStr = _str.match(regex);
|
|
3471
|
+
if (checkStr !== null) {
|
|
3472
|
+
return _str.replace(regex, (match, p) => `${parseInt(p, 10) + setIntVal(g_keyObj.dfPtnNum)}`);
|
|
3473
|
+
}
|
|
3474
|
+
return _str;
|
|
3475
|
+
};
|
|
3476
|
+
|
|
3448
3477
|
/**
|
|
3449
3478
|
* 新キー用複合パラメータ
|
|
3450
3479
|
* @param {string} _key キー数
|
|
@@ -3465,8 +3494,9 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
|
|
|
3465
3494
|
if (existParam(tmpArray[k], `${keyheader}_${k + dfPtn}`)) {
|
|
3466
3495
|
continue;
|
|
3467
3496
|
}
|
|
3468
|
-
|
|
3469
|
-
|
|
3497
|
+
const keyPtn = getKeyPtnName(tmpArray[k]);
|
|
3498
|
+
g_keyObj[`${keyheader}_${k + dfPtn}`] = g_keyObj[`${_name}${keyPtn}`] !== undefined ?
|
|
3499
|
+
copyArray2d(g_keyObj[`${_name}${keyPtn}`]) : tmpArray[k].split(`,`).map(n => _convFunc(n));
|
|
3470
3500
|
if (baseCopyFlg) {
|
|
3471
3501
|
g_keyObj[`${keyheader}_${k + dfPtn}d`] = copyArray2d(g_keyObj[`${keyheader}_${k + dfPtn}`]);
|
|
3472
3502
|
}
|
|
@@ -3498,15 +3528,16 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
|
|
|
3498
3528
|
let ptnCnt = 0;
|
|
3499
3529
|
tmpArray[k].split(`/`).forEach(list => {
|
|
3500
3530
|
|
|
3531
|
+
const keyPtn = getKeyPtnName(list);
|
|
3501
3532
|
if (list === ``) {
|
|
3502
3533
|
// 空指定の場合は一律同じグループへ割り当て
|
|
3503
3534
|
g_keyObj[`${keyheader}_${k + dfPtn}_${ptnCnt}`] = [...Array(g_keyObj[`chara${_key}_${k + dfPtn}`].length)].fill(0);
|
|
3504
3535
|
|
|
3505
|
-
} else if (g_keyObj[`${_name}${
|
|
3536
|
+
} else if (g_keyObj[`${_name}${keyPtn}_0`] !== undefined) {
|
|
3506
3537
|
// 他のキーパターン (例: |shuffle8i=8_0| ) を指定した場合、該当があれば既存パターンからコピー
|
|
3507
3538
|
let m = 0;
|
|
3508
|
-
while (g_keyObj[`${_name}${
|
|
3509
|
-
g_keyObj[`${keyheader}_${k + dfPtn}_${ptnCnt}`] = structuredClone(g_keyObj[`${_name}${
|
|
3539
|
+
while (g_keyObj[`${_name}${keyPtn}_${m}`] !== undefined) {
|
|
3540
|
+
g_keyObj[`${keyheader}_${k + dfPtn}_${ptnCnt}`] = structuredClone(g_keyObj[`${_name}${keyPtn}_${m}`]);
|
|
3510
3541
|
m++;
|
|
3511
3542
|
ptnCnt++;
|
|
3512
3543
|
}
|
|
@@ -3566,17 +3597,23 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
|
|
|
3566
3597
|
continue;
|
|
3567
3598
|
}
|
|
3568
3599
|
g_keyObj[pairName] = {}
|
|
3569
|
-
|
|
3570
|
-
|
|
3571
|
-
|
|
3572
|
-
|
|
3573
|
-
|
|
3574
|
-
|
|
3575
|
-
|
|
3600
|
+
|
|
3601
|
+
// デフォルト項目がある場合は先に定義
|
|
3602
|
+
if (_defaultName !== ``) {
|
|
3603
|
+
g_keyObj[pairName][_defaultName] = [...Array(g_keyObj[`chara${_key}_${k + dfPtn}`].length)].fill(_defaultVal);
|
|
3604
|
+
}
|
|
3605
|
+
tmpParams[k].split(`/`).forEach(pairs => {
|
|
3606
|
+
const keyPtn = getKeyPtnName(pairs);
|
|
3607
|
+
if (pairs === ``) {
|
|
3608
|
+
} else if (g_keyObj[`${_pairName}${keyPtn}`] !== undefined) {
|
|
3609
|
+
// 他のキーパターン指定時、該当があればプロパティを全コピー
|
|
3610
|
+
Object.assign(g_keyObj[pairName], g_keyObj[`${_pairName}${keyPtn}`]);
|
|
3611
|
+
} else {
|
|
3612
|
+
// 通常の指定方法(例:|scroll8i=Cross::1,1,1,-1,-1,-1,1,1/Split::1,1,1,1,-1,-1,-1,-1|)から取り込み
|
|
3576
3613
|
const tmpParamPair = pairs.split(`::`);
|
|
3577
3614
|
g_keyObj[pairName][tmpParamPair[0]] = tmpParamPair[1].split(`,`).map(n => parseInt(n, 10));
|
|
3578
|
-
}
|
|
3579
|
-
}
|
|
3615
|
+
}
|
|
3616
|
+
});
|
|
3580
3617
|
}
|
|
3581
3618
|
}
|
|
3582
3619
|
};
|
|
@@ -3613,7 +3650,7 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList.split(`,`) }
|
|
|
3613
3650
|
newKeyMultiParam(newKey, `stepRtn`, toStringOrNumber, { errCd: `E_0103` });
|
|
3614
3651
|
|
|
3615
3652
|
// キーコンフィグ (keyCtrlX_Y)
|
|
3616
|
-
newKeyMultiParam(newKey, `keyCtrl`,
|
|
3653
|
+
newKeyMultiParam(newKey, `keyCtrl`, toKeyCtrlArray, { errCd: `E_0104`, baseCopyFlg: true });
|
|
3617
3654
|
|
|
3618
3655
|
// ステップゾーン位置 (posX_Y)
|
|
3619
3656
|
newKeyMultiParam(newKey, `pos`, toFloat);
|
|
@@ -6247,28 +6284,38 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
6247
6284
|
* @param {boolean} _transKeyUse
|
|
6248
6285
|
* @returns
|
|
6249
6286
|
*/
|
|
6250
|
-
const searchPattern = (_tempPtn, _sign, _transKeyUse = false) => {
|
|
6287
|
+
const searchPattern = (_tempPtn, _sign, _transKeyUse = false, _skipFlg = false) => {
|
|
6251
6288
|
let nextPtn = _tempPtn + _sign;
|
|
6289
|
+
const initialPtn = hasVal(g_keyObj[`keyCtrl${g_keyObj.currentKey}_-1`]) ? -1 : 0;
|
|
6252
6290
|
|
|
6253
6291
|
const searchStart = _ => {
|
|
6254
|
-
nextPtn
|
|
6255
|
-
|
|
6256
|
-
nextPtn
|
|
6292
|
+
if (!hasVal(g_keyObj[`keyCtrl${g_keyObj.currentKey}_${nextPtn}`])) {
|
|
6293
|
+
nextPtn = 0;
|
|
6294
|
+
while (hasVal(g_keyObj[`keyCtrl${g_keyObj.currentKey}_${nextPtn}`])) {
|
|
6295
|
+
nextPtn -= _sign;
|
|
6296
|
+
}
|
|
6297
|
+
nextPtn += _sign;
|
|
6257
6298
|
}
|
|
6258
|
-
nextPtn += _sign;
|
|
6259
6299
|
};
|
|
6260
6300
|
|
|
6261
|
-
|
|
6262
|
-
|
|
6301
|
+
const searchNextGroup = _ => {
|
|
6302
|
+
while (nextPtn !== initialPtn &&
|
|
6303
|
+
g_keyObj[`transKey${g_keyObj.currentKey}_${_tempPtn}`] === g_keyObj[`transKey${g_keyObj.currentKey}_${nextPtn}`] &&
|
|
6304
|
+
hasVal(g_keyObj[`keyCtrl${g_keyObj.currentKey}_${nextPtn}`])) {
|
|
6305
|
+
nextPtn += _sign;
|
|
6306
|
+
}
|
|
6307
|
+
};
|
|
6308
|
+
|
|
6309
|
+
searchStart();
|
|
6310
|
+
if (_skipFlg) {
|
|
6311
|
+
searchNextGroup();
|
|
6263
6312
|
searchStart();
|
|
6264
6313
|
}
|
|
6265
6314
|
if (!_transKeyUse) {
|
|
6266
6315
|
while (hasVal(g_keyObj[`transKey${g_keyObj.currentKey}_${nextPtn}`])) {
|
|
6267
6316
|
nextPtn += _sign;
|
|
6268
6317
|
}
|
|
6269
|
-
|
|
6270
|
-
searchStart();
|
|
6271
|
-
}
|
|
6318
|
+
searchStart();
|
|
6272
6319
|
}
|
|
6273
6320
|
return nextPtn;
|
|
6274
6321
|
};
|
|
@@ -6276,11 +6323,12 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
6276
6323
|
/**
|
|
6277
6324
|
* キーパターン変更時処理
|
|
6278
6325
|
* @param {number} _sign
|
|
6326
|
+
* @param {boolean} _skipFlg
|
|
6279
6327
|
*/
|
|
6280
|
-
const changePattern = (_sign = 1) => {
|
|
6328
|
+
const changePattern = (_sign = 1, _skipFlg = false) => {
|
|
6281
6329
|
|
|
6282
6330
|
// キーパターンの変更
|
|
6283
|
-
g_keyObj.currentPtn = searchPattern(g_keyObj.currentPtn, _sign, g_headerObj.transKeyUse);
|
|
6331
|
+
g_keyObj.currentPtn = searchPattern(g_keyObj.currentPtn, _sign, g_headerObj.transKeyUse, _skipFlg);
|
|
6284
6332
|
|
|
6285
6333
|
// カラーグループ、シャッフルグループの再設定
|
|
6286
6334
|
g_keycons.groups.forEach(type => resetGroupList(type, `${g_keyObj.currentKey}_${g_keyObj.currentPtn}`));
|
|
@@ -6330,13 +6378,23 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
6330
6378
|
'Self' : g_keyObj.currentPtn + 1}${lblTransKey}`, g_lblPosObj.lblPattern),
|
|
6331
6379
|
|
|
6332
6380
|
// パターン変更ボタン描画(右回り)
|
|
6333
|
-
createCss2Button(`btnPtnChangeR`,
|
|
6381
|
+
createCss2Button(`btnPtnChangeR`, `>`, _ => true, Object.assign(g_lblPosObj.btnPtnChangeR, {
|
|
6334
6382
|
resetFunc: _ => changePattern(),
|
|
6335
|
-
}), g_cssObj.
|
|
6383
|
+
}), g_cssObj.button_Mini),
|
|
6336
6384
|
|
|
6337
6385
|
// パターン変更ボタン描画(左回り)
|
|
6338
|
-
createCss2Button(`btnPtnChangeL`,
|
|
6386
|
+
createCss2Button(`btnPtnChangeL`, `<`, _ => true, Object.assign(g_lblPosObj.btnPtnChangeL, {
|
|
6339
6387
|
resetFunc: _ => changePattern(-1),
|
|
6388
|
+
}), g_cssObj.button_Mini),
|
|
6389
|
+
|
|
6390
|
+
// パターン変更ボタン描画(右回り/別キーモード間スキップ)
|
|
6391
|
+
createCss2Button(`btnPtnChangeRR`, `|>`, _ => true, Object.assign(g_lblPosObj.btnPtnChangeRR, {
|
|
6392
|
+
resetFunc: _ => changePattern(1, true),
|
|
6393
|
+
}), g_cssObj.button_Setting),
|
|
6394
|
+
|
|
6395
|
+
// パターン変更ボタン描画(左回り/別キーモード間スキップ)
|
|
6396
|
+
createCss2Button(`btnPtnChangeLL`, `<|`, _ => true, Object.assign(g_lblPosObj.btnPtnChangeLL, {
|
|
6397
|
+
resetFunc: _ => changePattern(-1, true),
|
|
6340
6398
|
}), g_cssObj.button_Setting),
|
|
6341
6399
|
|
|
6342
6400
|
// キーコンフィグリセットボタン描画
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Source by tickle
|
|
7
7
|
* Created : 2019/11/19
|
|
8
|
-
* Revised : 2023/03/
|
|
8
|
+
* Revised : 2023/03/12 (v30.5.0)
|
|
9
9
|
*
|
|
10
10
|
* https://github.com/cwtickle/danoniplus
|
|
11
11
|
*/
|
|
@@ -251,11 +251,19 @@ const updateWindowSiz = _ => {
|
|
|
251
251
|
},
|
|
252
252
|
btnPtnChangeR: {
|
|
253
253
|
x: g_sWidth / 2, y: g_sHeight - 100,
|
|
254
|
-
w: g_sWidth /
|
|
254
|
+
w: g_sWidth / 9, h: C_BTN_HEIGHT / 2, siz: C_LBL_BTNSIZE * 2 / 3,
|
|
255
255
|
},
|
|
256
256
|
btnPtnChangeL: {
|
|
257
|
+
x: g_sWidth / 18, y: g_sHeight - 100,
|
|
258
|
+
w: g_sWidth / 9, h: C_BTN_HEIGHT / 2, siz: C_LBL_BTNSIZE * 2 / 3,
|
|
259
|
+
},
|
|
260
|
+
btnPtnChangeRR: {
|
|
261
|
+
x: g_sWidth * 11 / 18, y: g_sHeight - 100,
|
|
262
|
+
w: g_sWidth / 18, h: C_BTN_HEIGHT / 2, siz: C_LBL_BTNSIZE * 2 / 3,
|
|
263
|
+
},
|
|
264
|
+
btnPtnChangeLL: {
|
|
257
265
|
x: 0, y: g_sHeight - 100,
|
|
258
|
-
w: g_sWidth /
|
|
266
|
+
w: g_sWidth / 18, h: C_BTN_HEIGHT / 2, siz: C_LBL_BTNSIZE * 2 / 3,
|
|
259
267
|
},
|
|
260
268
|
btnKcReset: {
|
|
261
269
|
x: 0, y: g_sHeight - 75,
|
|
@@ -1455,6 +1463,8 @@ const g_keyObj = {
|
|
|
1455
1463
|
prevKey: `Dummy`,
|
|
1456
1464
|
dfPtnNum: 0,
|
|
1457
1465
|
|
|
1466
|
+
minKeyCtrlNum: 2,
|
|
1467
|
+
|
|
1458
1468
|
// キー別ヘッダー
|
|
1459
1469
|
// - 譜面データ中に出てくる矢印(ノーツ)の種類と順番(ステップゾーン表示順)を管理する。
|
|
1460
1470
|
// - ここで出てくる順番は、この後のstepRtn, keyCtrlとも対応している。
|
|
@@ -1650,51 +1660,51 @@ const g_keyObj = {
|
|
|
1650
1660
|
// 基本パターン (キーコンフィグ)
|
|
1651
1661
|
// - 順番はchara, stepRtnと対応している。
|
|
1652
1662
|
// - 多次元配列内はステップに対応するキーコードを示す。カンマ区切りで複数指定できる。
|
|
1653
|
-
keyCtrl5_0: [[37
|
|
1654
|
-
keyCtrl7_0: [[83
|
|
1655
|
-
keyCtrl7i_0: [[90
|
|
1656
|
-
keyCtrl8_0: [[83
|
|
1657
|
-
keyCtrl9A_0: [[83
|
|
1658
|
-
keyCtrl9B_0: [[65
|
|
1659
|
-
keyCtrl9i_0: [[37
|
|
1660
|
-
keyCtrl11_0: [[37
|
|
1661
|
-
keyCtrl11L_0: [[87
|
|
1662
|
-
keyCtrl11W_0: [[49, 50], [84
|
|
1663
|
-
keyCtrl11i_0: [[83
|
|
1664
|
-
keyCtrl12_0: [[85
|
|
1665
|
-
keyCtrl13_0: [[37
|
|
1666
|
-
keyCtrl14_0: [[84, 89], [85
|
|
1667
|
-
keyCtrl14i_0: [[90, 87], [88, 69], [67, 82], [37
|
|
1668
|
-
keyCtrl15A_0: [[87
|
|
1669
|
-
keyCtrl15B_0: [[87
|
|
1670
|
-
keyCtrl16i_0: [[90, 87], [88, 69], [67, 82], [37
|
|
1671
|
-
keyCtrl17_0: [[65
|
|
1672
|
-
keyCtrl23_0: [[87
|
|
1673
|
-
[90
|
|
1663
|
+
keyCtrl5_0: [[37], [40], [38], [39], [32]],
|
|
1664
|
+
keyCtrl7_0: [[83], [68], [70], [32], [74], [75], [76]],
|
|
1665
|
+
keyCtrl7i_0: [[90], [88], [67], [37], [40], [38], [39]],
|
|
1666
|
+
keyCtrl8_0: [[83], [68], [70], [32], [74], [75], [76], [13]],
|
|
1667
|
+
keyCtrl9A_0: [[83], [68], [69, 82], [70], [32], [74], [75], [73], [76]],
|
|
1668
|
+
keyCtrl9B_0: [[65], [83], [68], [70], [32], [74], [75], [76], [187]],
|
|
1669
|
+
keyCtrl9i_0: [[37], [40], [38], [39], [65], [83], [68], [70], [32]],
|
|
1670
|
+
keyCtrl11_0: [[37], [40], [38], [39], [83], [68], [70], [32], [74], [75], [76]],
|
|
1671
|
+
keyCtrl11L_0: [[87], [69], [51, 52], [82], [83], [68], [70], [32], [74], [75], [76]],
|
|
1672
|
+
keyCtrl11W_0: [[49, 50], [84], [89], [48, 189], [83], [68], [70], [32], [74], [75], [76]],
|
|
1673
|
+
keyCtrl11i_0: [[83], [88, 67], [68], [69, 82], [70], [32], [74], [77, 188], [75], [73, 79], [76]],
|
|
1674
|
+
keyCtrl12_0: [[85], [73], [56, 57], [79], [32], [78], [74], [77], [75], [188], [76], [190]],
|
|
1675
|
+
keyCtrl13_0: [[37], [40], [38], [39], [83], [68], [69, 82], [70], [32], [74], [75], [73], [76]],
|
|
1676
|
+
keyCtrl14_0: [[84, 89], [85], [73], [56, 55, 57, 48], [79], [192, 80], [32], [78], [74], [77], [75], [188], [76], [190]],
|
|
1677
|
+
keyCtrl14i_0: [[90, 87], [88, 69], [67, 82], [37], [40], [38], [39], [83], [68], [70], [32], [74], [75], [76]],
|
|
1678
|
+
keyCtrl15A_0: [[87], [69], [51, 52], [82], [37], [40], [38], [39], [83], [68], [70], [32], [74], [75], [76]],
|
|
1679
|
+
keyCtrl15B_0: [[87], [69], [51, 52], [82], [85], [73], [56, 57], [79], [83], [68], [70], [32], [74], [75], [76]],
|
|
1680
|
+
keyCtrl16i_0: [[90, 87], [88, 69], [67, 82], [37], [40], [38], [39], [65], [83], [68], [70], [32], [74], [75], [76], [187]],
|
|
1681
|
+
keyCtrl17_0: [[65], [90], [83], [88], [68], [67], [70], [86], [32], [78], [74], [77], [75], [188], [76], [190], [187]],
|
|
1682
|
+
keyCtrl23_0: [[87], [69], [51, 52], [82], [85], [73], [56, 57], [79],
|
|
1683
|
+
[90], [83], [88], [68], [67], [70], [86], [32], [78], [74], [77], [75], [188], [76], [190]],
|
|
1674
1684
|
|
|
1675
1685
|
// 変則パターン (キーコンフィグ)
|
|
1676
1686
|
// - _0 の数字部分をカウントアップすることで実現できる。
|
|
1677
|
-
keyCtrl5_1: [[32
|
|
1678
|
-
keyCtrl7_1: [[83
|
|
1679
|
-
keyCtrl8_1: [[13
|
|
1680
|
-
keyCtrl9A_1: [[83
|
|
1681
|
-
keyCtrl9i_1: [[65
|
|
1682
|
-
keyCtrl12_1: [[89
|
|
1683
|
-
keyCtrl14_1: [[82, 84], [89
|
|
1684
|
-
keyCtrl17_1: [[65
|
|
1687
|
+
keyCtrl5_1: [[32], [37], [40], [38], [39]],
|
|
1688
|
+
keyCtrl7_1: [[83], [69], [70], [32, 71, 72], [74], [73], [76]],
|
|
1689
|
+
keyCtrl8_1: [[13], [83], [68], [70], [32], [74], [75], [76]],
|
|
1690
|
+
keyCtrl9A_1: [[83], [68], [69, 82], [70], [32], [37], [40], [38], [39]],
|
|
1691
|
+
keyCtrl9i_1: [[65], [83], [68], [70], [32], [37], [40], [38], [39]],
|
|
1692
|
+
keyCtrl12_1: [[89], [85, 73], [56, 55, 57], [79], [32], [66], [72], [78, 77], [74, 75], [188], [76], [190]],
|
|
1693
|
+
keyCtrl14_1: [[82, 84], [89], [85, 73], [56, 54, 55, 57, 48], [79], [192, 80], [32], [66], [72], [78, 77], [74, 75], [188], [76], [190]],
|
|
1694
|
+
keyCtrl17_1: [[65], [83], [68], [70], [32], [74], [75], [76], [187], [90], [88], [67], [86], [78], [77], [188], [190]],
|
|
1685
1695
|
|
|
1686
|
-
keyCtrl5_2: [[68
|
|
1687
|
-
keyCtrl8_2: [[32
|
|
1688
|
-
keyCtrl12_2: [[87
|
|
1689
|
-
keyCtrl14_2: [[9, 81], [87
|
|
1696
|
+
keyCtrl5_2: [[68], [70], [32], [74], [75]],
|
|
1697
|
+
keyCtrl8_2: [[32], [78], [74], [77], [75], [188], [76], [190]],
|
|
1698
|
+
keyCtrl12_2: [[87], [69], [51, 52], [82], [16], [90], [83], [88], [68], [67], [70], [86]],
|
|
1699
|
+
keyCtrl14_2: [[9, 81], [87], [69], [51, 50, 52, 53], [82], [89, 84], [16], [90], [83], [88], [68], [67], [70], [86]],
|
|
1690
1700
|
|
|
1691
|
-
keyCtrl8_3: [[32
|
|
1692
|
-
keyCtrl12_3: [[87
|
|
1693
|
-
keyCtrl14_3: [[9, 81], [87
|
|
1701
|
+
keyCtrl8_3: [[32], [66], [72], [78, 77], [74, 75], [188], [76], [190]],
|
|
1702
|
+
keyCtrl12_3: [[87], [69, 82], [51, 52, 53], [84], [16], [90], [83], [88, 67], [68, 70], [86], [71], [66]],
|
|
1703
|
+
keyCtrl14_3: [[9, 81], [87], [69, 82], [51, 50, 52, 53, 54], [84], [85, 89], [16], [90], [83], [88, 67], [68, 70], [86], [71], [66]],
|
|
1694
1704
|
|
|
1695
|
-
keyCtrl8_4: [[16
|
|
1705
|
+
keyCtrl8_4: [[16], [90], [83], [88], [68], [67], [70], [86]],
|
|
1696
1706
|
|
|
1697
|
-
keyCtrl8_5: [[16
|
|
1707
|
+
keyCtrl8_5: [[16], [90], [83], [88, 67], [68, 70], [86], [71], [66]],
|
|
1698
1708
|
|
|
1699
1709
|
// 矢印間隔補正
|
|
1700
1710
|
blank: 55,
|
|
@@ -2040,9 +2050,14 @@ Object.keys(g_copyKeyPtn).forEach(keyPtnTo => {
|
|
|
2040
2050
|
});
|
|
2041
2051
|
|
|
2042
2052
|
// デフォルト配列のコピー (g_keyObj.aaa_X から g_keyObj.aaa_Xd を作成)
|
|
2053
|
+
// keyCtrlX_Yについて1キーにつき2キー割り当てできるように配列を補完
|
|
2043
2054
|
const keyCtrlName = Object.keys(g_keyObj).filter(val => val.startsWith(`keyCtrl`));
|
|
2044
|
-
keyCtrlName.forEach(property =>
|
|
2055
|
+
keyCtrlName.forEach(property => {
|
|
2056
|
+
g_keyObj[property].forEach((list, j) => g_keyObj[property][j] = makeBaseArray(g_keyObj[property][j], g_keyObj.minKeyCtrlNum, 0));
|
|
2057
|
+
g_keyObj[`${property}d`] = copyArray2d(g_keyObj[property]);
|
|
2058
|
+
});
|
|
2045
2059
|
|
|
2060
|
+
// shuffleX_Y, colorX_Yについてデフォルト配列を作成
|
|
2046
2061
|
g_keycons.groups.forEach(type => {
|
|
2047
2062
|
const tmpName = Object.keys(g_keyObj).filter(val => val.startsWith(type) && val.endsWith(`_0`));
|
|
2048
2063
|
tmpName.forEach(property => g_keyObj[`${property.slice(0, -2)}`] = g_keyObj[property].concat());
|