キーボード縦移動修正
by
cutfloss
06/01 [2026/06/01 00:28:51]
キーボード縦移動時にちゃんとまっすぐになるぞ!
@@ -4,53 +4,68 @@
* @private
*/
javascript:(function(){
- if (window._dutyRatioPatch) {
+ if (window._intervalSwitchPatch) {
alert('パッチはすでに適用されています。');
return;
}
- let useAlternative = false;
-
- /* ============================================================ */
- /* 🛠️ 司令官、ここの数値をいじって「時間の差」を調整してください */
- /* ============================================================ */
- const NORMAL_TIME = 100; /* 本来の数値(64や191=右寄り)のキープ時間(ミリ秒) */
- const ALTERN_TIME = 130; /* 補正の数値(63や190=左寄り)のキープ時間(ミリ秒) */
- /* ============================================================ */
-
- /* 自分自身を何度も呼び出し直すことで、交互に違うタイマー時間をセットする仕組み */
- function scheduler() {
- useAlternative = !useAlternative;
- /* 次の切り替えまでの時間を、現在のモードに合わせて変動させる */
- const nextTime = useAlternative ? ALTERN_TIME : NORMAL_TIME;
- setTimeout(scheduler, nextTime);
- }
- /* 初回起動 */
- setTimeout(scheduler, NORMAL_TIME);
+ /* ======================================================== */
+ /* 【司令官用・微調整エリア】(ミリ秒単位で指定してください。10ミリ秒 = 10) */
+ /* ======================================================== */
+ const UP_NORMAL_MS = 10; /* 真上・本来の向き(64: 右逸れ)の維持時間 */
+ const UP_ALTER_MS = 12; /* 真上・逆の向き (63: 左逸れ)の維持時間 */
+
+ const DOWN_NORMAL_MS = 10; /* 真下・本来の向き(191: 左逸れ)の維持時間 */
+ const DOWN_ALTER_MS = 12; /* 真下・逆の向き (190: 右逸れ)の維持時間 */
+ /* ======================================================== */
+
+ /* 状態管理用変数 */
+ let lastUpState = 64; /* 現在(直前)の上の状態 (64 または 63) */
+ let lastDownState = 191; /* 現在(直前)の下の状態 (191 または 190) */
+ let lastUpSwitchTime = Date.now();
+ let lastDownSwitchTime = Date.now();
/* WebSocketの送信関数(大元)をハック */
const originalSend = WebSocket.prototype.send;
WebSocket.prototype.send = function(data) {
+
if (data && (data.byteLength === 1 || data.length === 1)) {
const view = new Uint8Array(data.buffer || data);
let currentByte = view[0];
+ const now = Date.now();
/* 【真上移動のとき】 */
- if (currentByte === 64) {
- if (useAlternative) {
- view[0] = 63;
+ if (currentByte === 64 || currentByte === 63) {
+ /* 現在の状態に応じた制限時間を取得 */
+ const currentLimit = (lastUpState === 64) ? UP_NORMAL_MS : UP_ALTER_MS;
+
+ /* 指定された時間が経過していたら、状態を反転させる */
+ if (now - lastUpSwitchTime >= currentLimit) {
+ lastUpState = (lastUpState === 64) ? 63 : 64;
+ lastUpSwitchTime = now;
}
+
+ /* 決定された状態の数値をパケットに上書き */
+ view[0] = lastUpState;
}
/* 【真下移動のとき】 */
- else if (currentByte === 191) {
- if (useAlternative) {
- view[0] = 190;
+ else if (currentByte === 191 || currentByte === 190) {
+ /* 現在の状態に応じた制限時間を取得 */
+ const currentLimit = (lastDownState === 191) ? DOWN_NORMAL_MS : DOWN_ALTER_MS;
+
+ /* 指定された時間が経過していたら、状態を反転させる */
+ if (now - lastDownSwitchTime >= currentLimit) {
+ lastDownState = (lastDownState === 191) ? 190 : 191;
+ lastDownSwitchTime = now;
}
+
+ /* 決定された状態の数値をパケットに上書き */
+ view[0] = lastDownState;
}
}
return originalSend.apply(this, arguments);
};
- window._dutyRatioPatch = true;
- alert('【比率調整式・スイッチパッチ】\n本来の時間:' + NORMAL_TIME + 'ms\n補正の時間:' + ALTERN_TIME + 'ms\nで交互に切り替えます!ズレに合わせて微調整してください。');
+ window._intervalSwitchPatch = true;
+ alert('【4軸個別時間制御パッチ】\n上2通り・下2通りの維持時間を個別に設定しました!\n数値を調整して完璧な直線を見つけ出してください。');
})();
/*
* @title キーボード縦移動修正
* @description キーボード縦移動時にちゃんとまっすぐになるぞ!
* @private
*/
javascript:(function(){
if (window._intervalSwitchPatch) {
alert('パッチはすでに適用されています。');
return;
}
/* ======================================================== */
/* 【司令官用・微調整エリア】(ミリ秒単位で指定してください。10ミリ秒 = 10) */
/* ======================================================== */
const UP_NORMAL_MS = 10; /* 真上・本来の向き(64: 右逸れ)の維持時間 */
const UP_ALTER_MS = 12; /* 真上・逆の向き (63: 左逸れ)の維持時間 */
const DOWN_NORMAL_MS = 10; /* 真下・本来の向き(191: 左逸れ)の維持時間 */
const DOWN_ALTER_MS = 12; /* 真下・逆の向き (190: 右逸れ)の維持時間 */
/* ======================================================== */
/* 状態管理用変数 */
let lastUpState = 64; /* 現在(直前)の上の状態 (64 または 63) */
let lastDownState = 191; /* 現在(直前)の下の状態 (191 または 190) */
let lastUpSwitchTime = Date.now();
let lastDownSwitchTime = Date.now();
/* WebSocketの送信関数(大元)をハック */
const originalSend = WebSocket.prototype.send;
WebSocket.prototype.send = function(data) {
if (data && (data.byteLength === 1 || data.length === 1)) {
const view = new Uint8Array(data.buffer || data);
let currentByte = view[0];
const now = Date.now();
/* 【真上移動のとき】 */
if (currentByte === 64 || currentByte === 63) {
/* 現在の状態に応じた制限時間を取得 */
const currentLimit = (lastUpState === 64) ? UP_NORMAL_MS : UP_ALTER_MS;
/* 指定された時間が経過していたら、状態を反転させる */
if (now - lastUpSwitchTime >= currentLimit) {
lastUpState = (lastUpState === 64) ? 63 : 64;
lastUpSwitchTime = now;
}
/* 決定された状態の数値をパケットに上書き */
view[0] = lastUpState;
}
/* 【真下移動のとき】 */
else if (currentByte === 191 || currentByte === 190) {
/* 現在の状態に応じた制限時間を取得 */
const currentLimit = (lastDownState === 191) ? DOWN_NORMAL_MS : DOWN_ALTER_MS;
/* 指定された時間が経過していたら、状態を反転させる */
if (now - lastDownSwitchTime >= currentLimit) {
lastDownState = (lastDownState === 191) ? 190 : 191;
lastDownSwitchTime = now;
}
/* 決定された状態の数値をパケットに上書き */
view[0] = lastDownState;
}
}
return originalSend.apply(this, arguments);
};
window._intervalSwitchPatch = true;
alert('【4軸個別時間制御パッチ】\n上2通り・下2通りの維持時間を個別に設定しました!\n数値を調整して完璧な直線を見つけ出してください。');
})();
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。