mirror of
https://github.com/Ylianst/MeshAgent
synced 2026-02-10 13:40:32 +00:00
Added helper routine for generating boiler-plate code
This commit is contained in:
93
modules/utils/win-kblayout.js
Normal file
93
modules/utils/win-kblayout.js
Normal file
@@ -0,0 +1,93 @@
|
||||
/*
|
||||
Copyright 2020 Intel Corporation
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
var table = require('fs').readFileSync(process.argv[0].split('\\win-kblayout.js').join('\\win-kblayout_table.txt'));
|
||||
var lines = table.toString().split('\r\n');
|
||||
|
||||
var check = {};
|
||||
var buffer = Buffer.alloc(8);
|
||||
|
||||
var str = ' switch(((int64_t*)val)[0])\r\n';
|
||||
str += ' {\r\n';
|
||||
|
||||
for (var i = 0; i < lines.length; ++i)
|
||||
{
|
||||
var code = lines[i].split(' ')[0];
|
||||
var text = lines[i].substring(lines[i].indexOf(' ')).split(',')[0].trim();
|
||||
if (text.length < 8)
|
||||
{
|
||||
buffer.fill(0);
|
||||
Buffer.from(text).copy(buffer);
|
||||
var n = require('bignum').fromBuffer(buffer, { endian: 'little' });
|
||||
str += (' case ' + n.toString() + ': // ' + text + '\r\n');
|
||||
str += (' ret = "' + code + '";\r\n');
|
||||
str += (' break;\r\n');
|
||||
}
|
||||
}
|
||||
|
||||
var tst = {};
|
||||
for (var i = 0; i < lines.length; ++i)
|
||||
{
|
||||
var code = lines[i].split(' ')[0];
|
||||
var text = lines[i].substring(lines[i].indexOf(' ')).split(',')[0].trim();
|
||||
if (text.length >= 8)
|
||||
{
|
||||
if (tst[text.substring(0, 8)] == null) { tst[text.substring(0, 8)] = []; }
|
||||
|
||||
buffer.fill(0);
|
||||
Buffer.from(text.substring(0,8)).copy(buffer);
|
||||
var primary = require('bignum').fromBuffer(buffer, { endian: 'little' }).toString();
|
||||
buffer.fill(0);
|
||||
Buffer.from(text.substring(8)).copy(buffer);
|
||||
var secondary = require('bignum').fromBuffer(buffer, { endian: 'little' }).toString();
|
||||
|
||||
tst[text.substring(0, 8)].push({ code: code, text: text, primary: primary, secondary: secondary });
|
||||
}
|
||||
}
|
||||
|
||||
for (var i in tst)
|
||||
{
|
||||
if(tst[i].length == 1)
|
||||
{
|
||||
var val = tst[i].pop();
|
||||
str += (' case ' + val.primary + ': // ' + val.text + '\r\n');
|
||||
str += (' ret = "' + val.code + '";\r\n');
|
||||
str += (' break;\r\n');
|
||||
}
|
||||
else
|
||||
{
|
||||
var top = tst[i].peek();
|
||||
str += (' case ' + top.primary + ':\r\n');
|
||||
str += (' switch(((int64_t*)val)[1])\r\n');
|
||||
str += (' {\r\n');
|
||||
while (tst[i].length > 0)
|
||||
{
|
||||
top = tst[i].pop();
|
||||
str += (' case ' + top.secondary + ': // ' + top.text + '\r\n');
|
||||
str += (' ret = "' + top.code + '";\r\n');
|
||||
str += (' break;\r\n');
|
||||
}
|
||||
str += (' }\r\n');
|
||||
str += (' break;\r\n');
|
||||
}
|
||||
}
|
||||
|
||||
str += ' }\r\n';
|
||||
|
||||
console.log('Value saved to clipboard...');
|
||||
require('clipboard')(str);
|
||||
process.exit();
|
||||
|
||||
311
modules/utils/win-kblayout_table.txt
Normal file
311
modules/utils/win-kblayout_table.txt
Normal file
@@ -0,0 +1,311 @@
|
||||
00000401 ar-SA
|
||||
00000402 bg-BG
|
||||
00000403 ca-ES
|
||||
00000404 zh-TW
|
||||
00000405 cs-CZ
|
||||
00000406 da-DK
|
||||
00000407 de-DE
|
||||
00000408 el-GR
|
||||
00000409 en-US
|
||||
0000040A es-ES_tradnl
|
||||
0000040B fi-FI
|
||||
0000040C fr-FR
|
||||
0000040D he-IL
|
||||
0000040E hu-HU
|
||||
0000040F is-IS
|
||||
00000410 it-IT
|
||||
00000411 ja-JP
|
||||
00000412 ko-KR
|
||||
00000413 nl-NL
|
||||
00000414 nb-NO
|
||||
00000415 pl-PL
|
||||
00000416 pt-BR
|
||||
00000417 rm-CH
|
||||
00000418 ro-RO
|
||||
00000419 ru-RU
|
||||
0000041A hr-HR
|
||||
0000041B sk-SK
|
||||
0000041C sq-AL
|
||||
0000041D sv-SE
|
||||
0000041E th-TH
|
||||
0000041F tr-TR
|
||||
00000420 ur-PK
|
||||
00000421 id-ID
|
||||
00000422 uk-UA
|
||||
00000423 be-BY
|
||||
00000424 sl-SI
|
||||
00000425 et-EE
|
||||
00000426 lv-LV
|
||||
00000427 lt-LT
|
||||
00000428 tg-Cyrl-TJ
|
||||
00000429 fa-IR
|
||||
0000042A vi-VN
|
||||
0000042B hy-AM
|
||||
0000042C az-Latn-AZ
|
||||
0000042D eu-ES
|
||||
0000042E hsb-DE
|
||||
0000042F mk-MK
|
||||
00000430 st-ZA
|
||||
00000431 ts-ZA
|
||||
00000432 tn-ZA
|
||||
00000433 ve-ZA
|
||||
00000434 xh-ZA
|
||||
00000435 zu-ZA
|
||||
00000436 af-ZA
|
||||
00000437 ka-GE
|
||||
00000438 fo-FO
|
||||
00000439 hi-IN
|
||||
0000043A mt-MT
|
||||
0000043B se-NO
|
||||
0000043D yi-Hebr, reserved
|
||||
0000043E ms-MY
|
||||
0000043F kk-KZ
|
||||
00000440 ky-KG
|
||||
00000441 sw-KE
|
||||
00000442 tk-TM
|
||||
00000443 uz-Latn-UZ
|
||||
00000444 tt-RU
|
||||
00000445 bn-IN
|
||||
00000446 pa-IN
|
||||
00000447 gu-IN
|
||||
00000448 or-IN
|
||||
00000449 ta-IN
|
||||
0000044A te-IN
|
||||
0000044B kn-IN
|
||||
0000044C ml-IN
|
||||
0000044D as-IN
|
||||
0000044E mr-IN
|
||||
0000044F sa-IN
|
||||
00000450 mn-MN
|
||||
00000451 bo-CN
|
||||
00000452 cy-GB
|
||||
00000453 km-KH
|
||||
00000454 lo-LA
|
||||
00000455 my-MM
|
||||
00000456 gl-ES
|
||||
00000457 kok-IN
|
||||
00000458 mni-IN, reserved
|
||||
00000459 sd-Deva-IN, reserved
|
||||
0000045A syr-SY
|
||||
0000045B si-LK
|
||||
0000045C chr-Cher-US
|
||||
0000045D iu-Cans-CA
|
||||
0000045E am-ET
|
||||
0000045F tzm-Arab-MA, reserved
|
||||
00000460 ks-Arab
|
||||
00000461 ne-NP
|
||||
00000462 fy-NL
|
||||
00000463 ps-AF
|
||||
00000464 fil-PH
|
||||
00000465 dv-MV
|
||||
00000466 bin-NG, reserved
|
||||
00000467 fuv-NG, reserved
|
||||
00000468 ha-Latn-NG
|
||||
00000469 ibb-NG, reserved
|
||||
0000046A yo-NG
|
||||
0000046B quz-BO
|
||||
0000046C nso-ZA
|
||||
0000046D ba-RU
|
||||
0000046E lb-LU
|
||||
0000046F kl-GL
|
||||
00000470 ig-NG
|
||||
00000471 kr-NG, reserved
|
||||
00000472 om-ET
|
||||
00000473 ti-ET
|
||||
00000474 gn-PY
|
||||
00000475 haw-US
|
||||
00000476 la-Latn, reserved
|
||||
00000477 so-SO
|
||||
00000478 ii-CN
|
||||
00000479 pap-029, reserved
|
||||
0000047A arn-CL
|
||||
0000047C moh-CA
|
||||
0000047E br-FR
|
||||
00000480 ug-CN
|
||||
00000481 mi-NZ
|
||||
00000482 oc-FR
|
||||
00000483 co-FR
|
||||
00000484 gsw-FR
|
||||
00000485 sah-RU
|
||||
00000486 qut-GT
|
||||
00000487 rw-RW
|
||||
00000488 wo-SN
|
||||
0000048C prs-AF
|
||||
0000048D plt-MG, reserved
|
||||
0000048E zh-yue-HK, reserved
|
||||
0000048F tdd-Tale-CN, reserved
|
||||
00000490 khb-Talu-CN, reserved
|
||||
00000491 gd-GB
|
||||
00000492 ku-Arab-IQ
|
||||
00000493 quc-CO, reserved
|
||||
00000501 qps-ploc
|
||||
000005FE qps-ploca
|
||||
00000801 ar-IQ
|
||||
00000803 ca-ES-valencia
|
||||
00000804 zh-CN
|
||||
00000807 de-CH
|
||||
00000809 en-GB
|
||||
0000080A es-MX
|
||||
0000080C fr-BE
|
||||
00000810 it-CH
|
||||
00000811 ja-Ploc-JP, reserved
|
||||
00000813 nl-BE
|
||||
00000814 nn-NO
|
||||
00000816 pt-PT
|
||||
00000818 ro-MD
|
||||
00000819 ru-MD
|
||||
0000081A sr-Latn-CS
|
||||
0000081D sv-FI
|
||||
00000820 ur-IN
|
||||
0000082C az-Cyrl-AZ
|
||||
0000082E dsb-DE
|
||||
00000832 tn-BW
|
||||
0000083B se-SE
|
||||
0000083C ga-IE
|
||||
0000083E ms-BN
|
||||
00000843 uz-Cyrl-UZ
|
||||
00000845 bn-BD
|
||||
00000846 pa-Arab-PK
|
||||
00000849 ta-LK
|
||||
00000850 mn-Mong-CN
|
||||
00000851 bo-BT, reserved
|
||||
00000859 sd-Arab-PK
|
||||
0000085D iu-Latn-CA
|
||||
0000085F tzm-Latn-DZ
|
||||
00000860 ks-Deva, reserved
|
||||
00000861 ne-IN
|
||||
00000867 ff-Latn-SN
|
||||
0000086B quz-EC
|
||||
00000873 ti-ER
|
||||
000009FF qps-plocm
|
||||
00000C01 ar-EG
|
||||
00000C04 zh-HK
|
||||
00000C07 de-AT
|
||||
00000C09 en-AU
|
||||
00000C0A es-ES
|
||||
00000C0C fr-CA
|
||||
00000C1A sr-Cyrl-CS
|
||||
00000C3B se-FI
|
||||
00000C50 mn-Mong-MN
|
||||
00000C51 dz-BT
|
||||
00000C5F tmz-MA, reserved
|
||||
00000C6b quz-PE
|
||||
00001001 ar-LY
|
||||
00001004 zh-SG
|
||||
00001007 de-LU
|
||||
00001009 en-CA
|
||||
0000100A es-GT
|
||||
0000100C fr-CH
|
||||
0000101A hr-BA
|
||||
0000103B smj-NO
|
||||
0000105F tzm-Tfng-MA
|
||||
00001401 ar-DZ
|
||||
00001404 zh-MO
|
||||
00001407 de-LI
|
||||
00001409 en-NZ
|
||||
0000140A es-CR
|
||||
0000140C fr-LU
|
||||
0000141A bs-Latn-BA
|
||||
0000143B smj-SE
|
||||
00001801 ar-MA
|
||||
00001809 en-IE
|
||||
0000180A es-PA
|
||||
0000180C fr-MC
|
||||
0000181A sr-Latn-BA
|
||||
0000183B sma-NO
|
||||
00001C01 ar-TN
|
||||
00001C09 en-ZA
|
||||
00001C0A es-DO
|
||||
00001C1A sr-Cyrl-BA
|
||||
00001C3B sma-SE
|
||||
00002001 ar-OM
|
||||
00002009 en-JM
|
||||
0000200A es-VE
|
||||
0000200C fr-RE
|
||||
0000201A bs-Cyrl-BA
|
||||
0000203B sms-FI
|
||||
00002401 ar-YE
|
||||
00002409 en-029
|
||||
0000240A es-CO
|
||||
0000240C fr-CD
|
||||
0000241A sr-Latn-RS
|
||||
0000243B smn-FI
|
||||
00002801 ar-SY
|
||||
00002809 en-BZ
|
||||
0000280A es-PE
|
||||
0000280C fr-SN
|
||||
0000281A sr-Cyrl-RS
|
||||
00002C01 ar-JO
|
||||
00002C09 en-TT
|
||||
00002C0A es-AR
|
||||
00002C0C fr-CM
|
||||
00002C1A sr-Latn-ME
|
||||
00003001 ar-LB
|
||||
00003009 en-ZW
|
||||
0000300A es-EC
|
||||
0000300C fr-CI
|
||||
0000301A sr-Cyrl-ME
|
||||
00003401 ar-KW
|
||||
00003409 en-PH
|
||||
0000340A es-CL
|
||||
0000340C fr-ML
|
||||
00003801 ar-AE
|
||||
00003809 en-ID, reserved
|
||||
0000380A es-UY
|
||||
0000380C fr-MA
|
||||
00003c01 ar-BH
|
||||
00003c09 en-HK
|
||||
00003c0A es-PY
|
||||
00003c0C fr-HT
|
||||
00004001 ar-QA
|
||||
00004009 en-IN
|
||||
0000400A es-BO
|
||||
00004401 ar-Ploc-SA, reserved
|
||||
00004409 en-MY
|
||||
0000440A es-SV
|
||||
00004801 ar-145, reserved
|
||||
00004809 en-SG
|
||||
0000480A es-HN
|
||||
00004C09 en-AE, reserved
|
||||
00004C0A es-NI
|
||||
00005009 en-BH, reserved
|
||||
0000500A es-PR
|
||||
00005409 en-EG, reserved
|
||||
0000540A es-US
|
||||
00005809 en-JO, reserved
|
||||
0000580A es-419
|
||||
00005C09 en-KW, reserved
|
||||
00005C0A es-CU
|
||||
00006009 en-TR, reserved
|
||||
00006409 en-YE, reserved
|
||||
0000641A bs-Cyrl
|
||||
0000681A bs-Latn
|
||||
00006C1A sr-Cyrl
|
||||
0000701A sr-Latn
|
||||
0000703B smn
|
||||
0000742C az-Cyrl
|
||||
0000743B sms
|
||||
00007804 zh
|
||||
00007814 nn
|
||||
0000781A bs
|
||||
0000782C az-Latn
|
||||
0000783B sma
|
||||
00007843 uz-Cyrl
|
||||
00007850 mn-Cyrl
|
||||
0000785D iu-Cans
|
||||
0000785F tzm-Tfng
|
||||
00007C04 zh-Hant
|
||||
00007C14 nb
|
||||
00007C1A sr
|
||||
00007C28 tg-Cyrl
|
||||
00007C2E dsb
|
||||
00007C3B smj
|
||||
00007C43 uz-Latn
|
||||
00007C46 pa-Arab
|
||||
00007C50 mn-Mong
|
||||
00007C59 sd-Arab
|
||||
00007C5C chr-Cher
|
||||
00007C5D iu-Latn
|
||||
00007C5F tzm-Latn
|
||||
00007C67 ff-Latn
|
||||
00007C68 ha-Latn
|
||||
Reference in New Issue
Block a user