わいあーど頭痛

「ロスト・エンド・クレイドル」更新情報などのブログ

里々でキーコンフィグを実装したかった

もし使えそうならご自由にお使いください。
バグってたときなどの連絡先はこちらです。

概説

  • 里々でキーコンフィグを実装したかった何かです。
  • バグっていたら教えて下さい。お願いします。
  • タブ文字を【タブ】としています。replace.txtで置換するなどしてください。
  • 登録上限数は20です。それ以上足したい場合は改造してください。
  • 新しめの里々でないと動きません。
  • アンカーで選択肢を実装しています。テキストエディタなどで\_aを\__qへ置換すると普通の選択肢になります。
  • 処理にsprit関数を使っているので、他の箇所で(S0)などを使う場合は要注意です。
  • OnKeyPressが同時に2つ以上存在しないようにしてください。
  • 関数名、単語群名、変数名が他とかぶると誤動作します。

更新履歴

  • 2021-04-30
    • 「1pointなでられ」の説明が「1の頭をなでる」になっていたのを「1の角をなでる」へ修正
  • 2021-03-25
    • 初版公開

見本ゴースト

https://lnx.flop.jp/ukgk/archive/Satori-de-KeyConfig-Demo.nar
※このゴーストをセンター等に登録しないでください。こういうのがあるという紹介はOKです。

関数・単語群・変数で使用済みの名前

MemoOutput
OnShortCutKeyConfig-1a
OnShortCutKeyConfig-1b
OnShortCutKeyConfig-2a
OnShortCutKeyConfigNew
OnShortCutKeyConfigNew-2
OnShortCutKeyConfigNew-2b
OnShortCutKeyConfigNew-3
OnShortCutKeyErase
OnShortCutKeyMemoOutput
OnShortCutKeySort
ショートカットキーの一覧と設定
ショートカットキー区切り1
ショートカットキー区切り2
ショートカットキー検索ループ
ショートカットキー再設定ループ本体
ショートカットキー出力ループ子
ショートカットキー出力ループ本体
ショートカットキー初期値
ショートカット設定項目リスト
ショートカット設定中フラグ
ショートカット設定中解除
ショートカット設定中解除タイマ
一覧下矢印
一覧出力1
一覧出力2
一覧出力3
一覧上矢印
押されたキー
見つかったショートカットキー設定
今回のキー
今回の要素
設定済みショートカットキー
設定済みショートカットキーが押された
設定済みのキーです
設定済みのキーですnew
設定文字列を分割
設定文字列を分割2
前回のキー
前回の項目
前回の説明
前回の要素
分割したものを検索

辞書本体

@ショートカット設定項目リスト
\![*]\_a[(A0),OnTalk,ランダムトーク](sprintf,%-34s,ランダムトーク)\_a\nφ
\![*]\_a[(A0),ショートカットキーの一覧と設定,つつきメニュー](sprintf,%-34s,つつきメニュー)\_a\n\n[half]φ
\![*]\_a[(A0),0headなでられ,0の頭をなでる](sprintf,%-34s,0の頭をなでる)\_a\nφ
\![*]\_a[(A0),0faceなでられ,0の顔をなでる](sprintf,%-34s,0の顔をなでる)\_a\nφ
\![*]\_a[(A0),0mouseなでられ,0の唇をなでる](sprintf,%-34s,0の唇をなでる)\_a\nφ
\![*]\_a[(A0),0bustなでられ,0の胸をなでる](sprintf,%-34s,0の胸をなでる)\_a\nφ
\![*]\_a[(A0),0legなでられ,0の脚をなでる](sprintf,%-34s,0の脚をなでる)\_a\nφ
\![*]\_a[(A0),0handなでられ,0の手をなでる](sprintf,%-34s,0の手をなでる)\_a\n\n[half]φ
\![*]\_a[(A0),1headなでられ,1の頭をなでる](sprintf,%-34s,1の頭をなでる)\_a\nφ
\![*]\_a[(A0),1pointなでられ,1の角をなでる](sprintf,%-34s,1の角をなでる)\_a
#可読性のため、改行をφで無効化しています 実質一行
#最後のみφなし
#要はA0のイベントへ飛ぶ際にR0へ関数名、R1へ説明を入れてあれば何でも良い
#・アンカーで実装する例
#\_a[(A0),キーが押されたら実行する関数名,説明]説明\_a
#・選択肢で実装する例
#\__q[(A0),キーが押されたら実行する関数名,説明]説明\__q

@ショートカットキー初期値
|z;OnTalk;ランダムトーク|x;ショートカットキーの一覧と設定;つつきメニュー|c;0headなでられ;0の頭をなでる|

*OnKeyPress
$押されたキー【タブ】(R0)
>(ショートカット設定中フラグ)【タブ】(変数「ショートカット設定中フラグ」の存在)==1
>設定済みショートカットキーが押された【タブ】(変数「設定済みショートカットキー」の存在)==1&&(count,(設定済みショートカットキー),(ショートカットキー区切り1)(押されたキー)(ショートカットキー区切り2))==1
>(押されたキー)が押された



#ーーーーーーーーカスタム要素ここまでーーーーーーーー



@ショートカットキー区切り1
|
@ショートカットキー区切り2
;

*設定済みショートカットキーが押された
$設定文字列を分割【タブ】(nop,(split,(設定済みショートカットキー),(ショートカットキー区切り1),0,0))
$見つかったショートカットキー設定【タブ】
$分割したものを検索【タブ】(for,0,(Sの数)-1,(ショートカットキー検索ループ))
$設定文字列を分割2【タブ】(nop,(split,(見つかったショートカットキー設定),(ショートカットキー区切り2),0,0))
$見つかったショートカットキー設定【タブ】
>(S1)

@ショートカットキー検索ループ
(when,(compare_head,(S(C0)),(押されたキー))==1,(set,見つかったショートカットキー設定,(S(C0))))



*ショートカットキーの一覧と設定
$前回のキー【タブ】
$前回の項目【タブ】
$前回の説明【タブ】
$前回の要素【タブ】
$押されたキー【タブ】
$設定済みショートカットキー【タブ】(when,(変数「設定済みショートカットキー」の存在)==1,(設定済みショートカットキー),(ショートカットキー初期値))
$設定文字列を分割【タブ】(nop,(split,(設定済みショートカットキー),(ショートカットキー区切り1),0,0))
$引数区切り追加【タブ】;
:\_q\b[2](sprintf,%-34s,★ショートカットキー)φ
 (when、(equal,(設定済みショートカットキー),(ショートカットキー区切り1))==1、\f[strike,1]【メモ出力】\f[default]、\_a[OnShortCutKeyMemoOutput]【メモ出力】\_a)\n[half]φ
(when、(equal,(設定済みショートカットキー),(ショートカットキー区切り1))==0、(for、0、(Sの数)-1、\n\![*]\_a[OnShortCutKeyConfig-1a,(call;一覧出力1;(S(C0)))](sprintf,%-6s,(call;一覧出力2;(S(C0))))\_a\_a[OnShortCutKeyConfig-2a,(call;一覧出力1;(S(C0)))](sprintf,%-20s,(call;一覧出力3;(S(C0))))\_a(一覧下矢印)(一覧上矢印)\_a[OnShortCutKeyErase,(S(C0))] 消 \_a))φ
(when、(Sの数)<20、\n\![*]\_a[OnShortCutKeyConfigNew](sprintf,%-34s,【新規設定】)\_a、\n※登録数が上限に達しました)\_q
$引数区切り削除【タブ】;

@一覧出力1
(A0),(A1),(A2)
@一覧出力2
(A0):
@一覧出力3
(A2)



@一覧上矢印
(when、(C0)>0&&(Sの数)!=1、\_a[OnShortCutKeySort,up,(C0)] ▲ \_a、  )

@一覧下矢印
(when、(C0)<(Sの数)-1&&(Sの数)!=1、\_a[OnShortCutKeySort,down,(C0)] ▼ \_a、  )



*OnShortCutKeyConfig-1a
$前回の要素【タブ】(ショートカットキー区切り1)(R0)(ショートカットキー区切り2)
$ショートカット設定中解除タイマ【タブ】30
$ショートカット設定中フラグ【タブ】OnShortCutKeyConfig-1b
:\_q※キーボードから設定するキーを選んで押してくださいφ。\n[half]
反応がない場合φ、立ち絵を一度だけクリックしてから再度押してみてくださいφ。\n[half]
バルーンを一度クリックで前の画面に戻りますφ。\_q\x\![raise,ショートカット設定中解除]

*OnShortCutKeyConfig-1b
$ショートカット設定中解除タイマ【タブ】
$ショートカット設定中フラグ【タブ】
$今回の要素【タブ】(ショートカットキー区切り1)(押されたキー)(ショートカットキー区切り2)
>設定済みのキーです【タブ】(count,(設定済みショートカットキー),(ショートカットキー区切り1)(押されたキー)(ショートカットキー区切り2))>0
$設定済みショートカットキー【タブ】(replace_first,(設定済みショートカットキー),(前回の要素),(今回の要素))
$前回の要素【タブ】
$今回の要素【タブ】
>ショートカットキーの一覧と設定

*設定済みのキーです
:\_q(押されたキー)は既に使われていますφ。\_q\n[half]
>OnShortCutKeyConfig-1a



*OnShortCutKeyConfig-2a
$前回のキー【タブ】(R0)
$前回の項目【タブ】(R1)
$前回の説明【タブ】(R2)
$前回の要素【タブ】(ショートカットキー区切り1)(R0)(ショートカットキー区切り2)(R1)(ショートカットキー区切り2)(R2)(ショートカットキー区切り1)
:\_q\b[2]※設定したい動作を選んでくださいφ。\n[half]
(call,ショートカット設定項目リスト,OnShortCutKeyConfigNew-2b)\_q

*OnShortCutKeyConfigNew-2b
$今回の要素【タブ】(ショートカットキー区切り1)(前回のキー)(ショートカットキー区切り2)(R0)(ショートカットキー区切り2)(R1)(ショートカットキー区切り1)
$設定済みショートカットキー【タブ】(replace_first,(設定済みショートカットキー),(前回の要素),(今回の要素))
$前回のキー【タブ】
$前回の項目【タブ】
$前回の説明【タブ】
$前回の要素【タブ】
$今回の要素【タブ】
>ショートカットキーの一覧と設定



*OnShortCutKeySort
$設定文字列を分割【タブ】(nop,(split,(設定済みショートカットキー),(ショートカットキー区切り1),0,0))
$設定済みショートカットキー【タブ】(ショートカットキー区切り1)(for、0、(Sの数)-1、(ショートカットキー再設定ループ本体))
>ショートカットキーの一覧と設定

@ショートカットキー再設定ループ本体【タブ】(R0)==up
(whenlist,(C0),==(R1)-1,(S(calc,(C0)+1)),==(R1),(S(calc,(C0)-1)),(S(C0)))(ショートカットキー区切り1)
@ショートカットキー再設定ループ本体【タブ】(R0)==down
(whenlist,(C0),==(R1),(S(calc,(C0)+1)),==(R1)+1,(S(calc,(C0)-1)),(S(C0)))(ショートカットキー区切り1)



*OnShortCutKeyConfigNew
$ショートカット設定中解除タイマ【タブ】30
$ショートカット設定中フラグ【タブ】OnShortCutKeyConfigNew-2
:\_q※キーボードから設定するキーを選んで押してくださいφ。\n[half]
反応がない場合φ、立ち絵を一度だけクリックしてから再度押してみてくださいφ。\n[half]
バルーンを一度クリックで前の画面に戻りますφ。\_q\x\![raise,ショートカット設定中解除]

*OnShortCutKeyConfigNew-2
$ショートカット設定中解除タイマ【タブ】
$ショートカット設定中フラグ【タブ】
$今回のキー【タブ】(押されたキー)
>設定済みのキーですnew【タブ】(count,(設定済みショートカットキー),(ショートカットキー区切り1)(押されたキー)(ショートカットキー区切り2))>0
:\_q\b[2]※続いてφ、(押されたキー)へ設定したい動作を選んでくださいφ。\n[half]
(call,ショートカット設定項目リスト,OnShortCutKeyConfigNew-3)\_q


*設定済みのキーですnew
:\_q※(押されたキー)は既に使われていますφ。\_q\n[half]
>OnShortCutKeyConfigNew

*OnShortCutKeyConfigNew-3
$設定済みショートカットキー【タブ】(設定済みショートカットキー)(今回のキー)(ショートカットキー区切り2)(R0)(ショートカットキー区切り2)(R1)(ショートカットキー区切り1)
$今回のキー【タブ】
>ショートカットキーの一覧と設定



*OnShortCutKeyErase
$設定済みショートカットキー【タブ】(erase_first,(設定済みショートカットキー),(R0)(ショートカットキー区切り1))
>ショートカットキーの一覧と設定



*OnShortCutKeyMemoOutput
$引数区切り追加【タブ】;
$設定文字列を分割【タブ】(nop,(split,(設定済みショートカットキー),(ショートカットキー区切り1),0,0))
$MemoOutput【タブ】(ショートカットキー区切り1)(for、0、(Sの数)-1、(ショートカットキー出力ループ本体))
$引数区切り削除【タブ】;
:\_q※箱の中身をどこかにコピペしてくださいφ。\_q\![open,inputbox,OnShortCutKeyMemoOutputだよ,0,(MemoOutput)]
$MemoOutput【タブ】
#全角|を区切りとしています。



@ショートカットキー出力ループ本体
(call;ショートカットキー出力ループ子;(S(C0)))
@ショートカットキー出力ループ子
(sprintf,%-5s%s,(A0):,(A2)|)



*ショートカット設定中解除
$ショートカット設定中解除タイマ【タブ】
$ショートカット設定中フラグ【タブ】
>ショートカットキーの一覧と設定