「ちーたんタッチボード」のボードファイルをjqコマンドで作ってみる

2023年11月7日

「ちーたんタッチボード」

 Windows タブレット端末向けのソフトウェアキーボード&マウスパッドの機能を提供するアプリです。キーの配置を好みに合わせて自由に設定することができます。

https://sorceryforce.net/ja/tiitan-touch-board

バリアフリーパソコンサポート まほろばさん

障碍者や高齢者を対象に、パソコンなどのIT機器に関する技術支援を行うボランティアグループです。

Windowsのマウス操作向け設定 (ショートカット)の記事です

https://petile.com/mahoroba/e2123.html

こちらを参考に作成させていただきました

jqコマンド

https://stedolan.github.io/jq/

jqコマンドを使ってCSV ファイルからJSON ファイルを作成

作成用バッチファイル

if "%1" == "" (
set Width=100
set Height=700
set Name=tate2x15
set Name2=175_%Name%_1_01
) else (
set Width=%1
set Height=%2
set Name=%3
set Name2=%4
)
set mappingi=mappingi
set mappingt=mappingt
set mappingp=mappingp
set mappingq=mappingq
set mappings=mappings

set outf=%Name2%.setting
set inf=%Name2%.csv

findstr "%mappingi%" %inf% > %mappingi%.csv
findstr "%mappingt%" %inf% > %mappingt%.csv
findstr "%mappingp%" %inf% > %mappingp%.csv
findstr "%mappingq%" %inf% > %mappingq%.csv
findstr "%mappings%" %inf% > %mappings%.csv

echo { > %outf%
echo  "IdentityName": "%Name2%", >> %outf%
echo  "Author": "eightban", >> %outf%
echo  "Version": 1, >> %outf%
echo  "KeyReleaseTimingWhenActiveWindowChange": "Window", >> %outf%
echo  "GeneratorIdentityName": "none", >> %outf%
echo  "GeneratorVersion": 1.0, >> %outf%
echo  "Boards": [ >> %outf%
echo   { >> %outf%
echo    "Keys": [ >> %outf%


type %mappingi%.csv|jq-win64.exe -R -c -f %mappingi%.jq>>%outf%
type %mappingt%.csv|jq-win64.exe -R -c -f %mappingt%.jq>>%outf%
type %mappingp%.csv|jq-win64.exe -R -c -f %mappingp%.jq>>%outf%
type %mappingq%.csv|jq-win64.exe -R -c -f %mappingq%.jq>>%outf%
type %mappings%.csv|jq-win64.exe -R -c -f %mappings%.jq>>%outf%
echo   {} >> %outf%
timeout /t 5

echo    ], >> %outf%
echo    "IdentityName": "%Name%", >> %outf%
echo    "Position": { >> %outf%
echo     "X": 0, >> %outf%
echo     "Y": 0, >> %outf%
echo     "Width": %Width%, >> %outf%
echo     "Height": %Height% >> %outf%
echo    }, >> %outf%
echo    "StartPositionType": "TopLeft", >> %outf%
echo    "PositionOffset": { >> %outf%
echo     "X": 0, >> %outf%
echo     "Y": 0 >> %outf%
echo    }, >> %outf%
echo    "CenterPosition": { >> %outf%
echo     "X": 0, >> %outf%
echo     "Y": 0 >> %outf%
echo    }, >> %outf%
echo    "FontSizeScale": 0.9, >> %outf%
echo    "BoardScale": 1 >> %outf%
echo   } >> %outf%
echo  ] >> %outf%
echo } >> %outf%

powershell -Command "(Get-Content -Path '%outf%' -Encoding utf8 ) -replace '}}','}},'   | Out-File '%outf%.wk' -Encoding utf8 "
powershell -Command "(Get-Content -Path '%outf%.wk' -Encoding utf8 ) -replace '}]}','}]},'   | Out-File '%outf%' -Encoding utf8 "

type %outf%|jq-win64.exe >%outf%.wk
type %outf%.wk>%outf%
del %outf%.wk
timeout /t 5

イメージ用 mappingi.jq

split(“,")|
{“KeyType":.[0],
“ImageName":.[1],
“ImageStretchMode":.[2],
“Position": {
“X": .[3] | tonumber,
“Y": .[4] | tonumber,
“Width": .[5] | tonumber,
“Height": .[6] | tonumber
},
}

テキスト用 mappingt.jq

split(“,")|
{“KeyType":.[0],
“DisplayText":.[1],
“FontSize":.[2],
“Position": {
“X": .[3],
“Y": .[4],
“Width": .[5],
“Height": .[6]
},
}

プロセス2用 mappingp.jq

split(“,")|
{“KeyType":.[0],
“DisplayText":.[1],
“FontSize":.[2],
“Position": {
“X": .[3],
“Y": .[4],
“Width": .[5],
“Height": .[6]
},
“Processes": [
{
“KeyType": .[7]
},
{
“KeyType": .[8]
}
],
}

プロセス3用 mappingq.jq

split(“,")|
{“KeyType":.[0],
“DisplayText":.[1],
“FontSize":.[2],
“Position": {
“X": .[3],
“Y": .[4],
“Width": .[5],
“Height": .[6]
},
“Processes": [
{
“KeyType": .[7]
},
{
“KeyType": .[8]
},
{
“KeyType": .[9]
}
],
}

シフトキー用 mappings.jq

split(“,")|
{“KeyType":.[0],
“DisplayText":.[1],
“FontSize":.[2],
“Position": {
“X": .[3],
“Y": .[4],
“Width": .[5],
“Height": .[6],
},
“IsToggle": .[7],
“IsOneClickToggleRelease": .[8],
“Processes": [
{
“KeyType": .[9]
}
],

}

入力用 CSV ファイル

BoardMove,BoardMove,Fill,0,0,50,50,,,,mappingimappingi
ConfigMenu,Config,Fill,50,0,50,50,,,,mappingi
BoardNext,BoardNext,Fill,50,50,50,50,,,,mappingi
BoardPrev,BoardPrev,Fill,0,50,50,50,,,,mappingi
AltTab,アプリ切替,12,0,100,50,50,LeftAlt,Tab,,mappingp
AltF4,アプリ終了,12,50,100,50,50,LeftAlt,F4,,mappingp
WinDown,最小化,12,0,150,50,50,LeftWindows,Down,,mappingp
WinUp,最大化,12,50,150,50,50,LeftWindows,Up,,mappingp
LeftShift,Shift,12,0,200,50,50,true,true,LeftShift,mappings
RightShift,Shift2,12,50,200,50,50,true,false,RightShift,mappings
CtrlC,コピー,12,0,250,50,50,LeftCtrl,C,,mappingp
CtrlV,貼付,12,50,250,50,50,LeftCtrl,V,,mappingp
CtrlX,切り取り,12,0,300,50,50,LeftCtrl,X,,mappingp
WinV,クリップボード,12,50,300,50,50,LeftWindows,V,,mappingp
CtrlA,全選択,12,0,350,50,50,LeftCtrl,A,,mappingp
ShiftF10,右クリック,12,50,350,50,50,LeftShift,F10,,mappingp
PageUp,ページ↑,12,0,400,50,50,,,,mappingt
PageDown,ページ↓,12,50,400,50,50,,,,mappingt
Up,↑,12,0,450,50,50,,,,mappingt
Down,↓,12,50,450,50,50,,,,mappingt
Left,←,12,0,500,50,50,,,,mappingt
Right,→,12,50,500,50,50,,,,mappingt
Delete,Del,12,0,550,50,50,,,,mappingt
BackSpace,BS,12,50,550,50,50,,,,mappingt
Space,スペース,12,0,600,50,50,,,,mappingt
Enter,エンター,12,50,600,50,50,,,,mappingt

Microsoft Excel,cassavaなどで編集してください
bomなしUTF 8で保存(メモ帳で変換できます)
11列目はそれぞれの種別によって設定します

解説

ボード名.入力CSV ファイル名.出力ファイル名.ボードサイズを設定します
CSV ファイルを振り分けます。
ボードファイルの前半部を作成します。

CSV ファイルから JSON ファイルを作成します。-R 入力そのまま。-c 整形しない

ボードファイルの後半部を作成します。

キーの行の末尾にカンマを入れます。
整形します

画像

作成ソース

カスタマイズして使用ください

別バージョン