[{"data":1,"prerenderedAt":1068},["ShallowReactive",2],{"content-/thinkpad-trackpoint-scroll-dies-after-sleep":3,"all-pages-for-dir":1045,"related-/thinkpad-trackpoint-scroll-dies-after-sleep":1046,"og-image-/thinkpad-trackpoint-scroll-dies-after-sleep":1067},{"id":4,"title":5,"body":6,"category":1025,"concepts":1026,"description":1027,"extension":1028,"meta":1029,"navigation":1030,"ogImage":1026,"path":1031,"project_name":1026,"published":1032,"publishedAt":1033,"seo":1034,"source":1026,"stem":1035,"tags":1036,"todo":1043,"unpublished":1032,"updatedAt":1026,"__hash__":1044},"pages/2026-08/2026-08-11/thinkpad-trackpoint-scroll-dies-after-sleep.md","電源を切ると直るバグを追う — ThinkPadキーボードのスクロールだけが死ぬ理由",{"type":7,"value":8,"toc":1007},"minimark",[9,13,18,27,30,47,50,57,60,76,79,150,161,165,168,178,185,188,194,204,207,213,217,220,225,232,235,241,247,254,260,264,267,310,316,322,328,339,342,348,351,354,451,460,463,478,484,498,501,504,516,522,525,528,542,545,551,556,560,563,566,575,609,627,633,641,648,653,668,672,675,681,687,692,702,705,711,714,718,721,745,751,758,767,776,791,796,807,810,816,830,833,839,842,848,851,854,860,866,869,926,938,945,948,990,993,1003],[10,11,5],"h1",{"id":12},"電源を切ると直るバグを追う-thinkpadキーボードのスクロールだけが死ぬ理由",[14,15,17],"h2",{"id":16},"症状は条件のほうが奇妙だった","症状は、条件のほうが奇妙だった",[19,20,21,22,26],"p",{},"Lenovo の外付けキーボード ThinkPad TrackPoint Keyboard II を使っていると、ときどき中ボタンを押しながら赤ポチを倒すスクロールが効かなくなる。キー入力は打てる。左クリックも右クリックもポインタ移動も正常。",[23,24,25],"strong",{},"スクロールだけが死ぬ","。",[19,28,29],{},"発生条件として申告されたのは次の3つだった。",[31,32,33,37,42],"ul",{},[34,35,36],"li",{},"席を離れて Windows が自動スリープし、電源ボタンで復帰させたときに起きやすい",[34,38,39],{},[23,40,41],{},"Windows の「再起動」では直らないことがある",[34,43,44],{},[23,45,46],{},"電源をオフにしてから入れ直すと直る",[19,48,49],{},"最後の2つが噛み合わない。ふつう、再起動のほうが電源オフ→オンより「深い」初期化に見える。実際には逆で、再起動では USB ポートへの給電が維持され、完全な電源断ならデバイス側がリセットされる、という説明は成り立つ。だからこの時点での見立ては「USB デバイスかハブが、スリープ復帰時のリセットに失敗して変な状態で固まっている」だった。",[19,51,52,53,56],{},"結論から言うと、",[23,54,55],{},"この見立ては外れだった","。そして最終的な犯人は、USB でもドライバでもなかった。",[14,58,59],{"id":59},"調べる対象を先に押さえる",[19,61,62,63,67,68,71,72,75],{},"デバイスを列挙すると ",[64,65,66],"code",{},"VID_17EF","（Lenovo）",[64,69,70],{},"PID_60EE"," が ",[23,73,74],{},"2台分","出てきた。左手用と右手用に、同じ型を2台つないでいるためだ。あとで「2台あることが競合の原因では」という疑いが出てくるので、この時点で頭に入れておく。",[19,77,78],{},"あわせて、効いてきそうな条件を先に並べておく。",[80,81,82,95],"table",{},[83,84,85],"thead",{},[86,87,88,92],"tr",{},[89,90,91],"th",{},"項目",[89,93,94],{},"値",[96,97,98,107,115,123,134,142],"tbody",{},[86,99,100,104],{},[101,102,103],"td",{},"OS",[101,105,106],{},"Windows 11 Pro 10.0.26200",[86,108,109,112],{},[101,110,111],{},"キーボード",[101,113,114],{},"ThinkPad TrackPoint Keyboard II × 2台（USB接続）",[86,116,117,120],{},[101,118,119],{},"接続経路",[101,121,122],{},"Genesys Logic の USB ハブを2段カスケード",[86,124,125,128],{},[101,126,127],{},"スリープ",[101,129,130,133],{},[23,131,132],{},"S3 のみ","（Modern Standby はファームウェア非対応）",[86,135,136,139],{},[101,137,138],{},"休止状態・高速スタートアップ",[101,140,141],{},"無効",[86,143,144,147],{},[101,145,146],{},"USB セレクティブサスペンド",[101,148,149],{},"AC 側で無効",[19,151,152,153,156,157,160],{},"外付けキーボードなので、疑う先は大きく2系統になる。",[23,154,155],{},"USB の接続経路","か、",[23,158,159],{},"キーボードに付属する Lenovo のソフト","か。まず前者から見た。",[14,162,164],{"id":163},"空振り-その1-死んだusbポートは死体ですらなかった","空振り その1 — 死んだUSBポートは死体ですらなかった",[19,166,167],{},"USB のツリーをたどると、それらしいものが見つかった。",[169,170,175],"pre",{"className":171,"code":173,"language":174},[172],"language-text","USB Root Hub 3.0\n└ Generic USB Hub (05E3:0610)          ← Genesys Logic 製\n   └ Generic USB Hub (05E3:0610)       ← 2段目\n      ├ port1: ThinkPad Keyboard II\n      ├ port2: ThinkPad Keyboard II\n      └ port3: Unknown USB Device (Port Reset Failed)   ← ？\n","text",[64,176,173],{"__ignoreMap":177},"",[19,179,180,181,184],{},"キーボードと",[23,182,183],{},"同じハブの隣のポートに、ポートリセットに失敗したデバイスがある","。安価な USB ハブがスリープ復帰時のリセットに失敗するのはよくある話で、筋書きとしては悪くない。",[19,186,187],{},"詳細を見て、この線は消えた。",[169,189,192],{"className":190,"code":191,"language":174},[172],"Problem            : CM_PROB_PHANTOM\nProblemDescription : Currently, this hardware device is not connected to the computer. (Code 45).\nPresent            : False\n",[64,193,191],{"__ignoreMap":177},[19,195,196,199,200,203],{},[64,197,198],{},"CM_PROB_PHANTOM","（コード45）は「",[23,201,202],{},"今は接続されていない","」という意味で、デバイスマネージャーで「非表示のデバイスを表示」にしたときだけ見える幽霊エントリだ。過去に挿していた何かの登録が残っているだけで、現在の不具合とは関係がない。",[19,205,206],{},"USB の電源管理も見たが、セレクティブサスペンドは AC 側で無効になっていた。デスクトップなので常時 AC であり、実効しない。",[19,208,209,212],{},[23,210,211],{},"空振り1つ目。"," ただし後述するとおり、この2つの否定は後で外部レビューに突き返されることになる。",[14,214,216],{"id":215},"手がかりは壊れ方の非対称性だった","手がかりは「壊れ方の非対称性」だった",[19,218,219],{},"行き詰まったので、症状そのものを見直した。",[19,221,222],{},[23,223,224],{},"キー入力は生きている。左右クリックも生きている。スクロールだけが死ぬ。",[19,226,227,228,231],{},"これは強い手がかりだ。もしキーボードのUSB接続そのものが壊れているなら、キー入力も一緒に死ぬはずで、そうなっていない。つまり",[23,229,230],{},"キーボードから Windows までの標準的な経路は無事","で、スクロールだけが別の仕組みに依存していることになる。",[19,233,234],{},"そこで、その「別の仕組み」がどこにあるかを探した。まずカーネル空間を疑う。",[169,236,239],{"className":237,"code":238,"language":174},[172],"Win32_PnPSignedDriver に DriverProviderName = Lenovo のもの → 0 件\n\nHIDClass    UpperFilters: (空)\nMouse       UpperFilters: mouclass    ← Windows標準のみ\nKeyboard    UpperFilters: kbdclass    ← Windows標準のみ\n",[64,240,238],{"__ignoreMap":177},[19,242,243,246],{},[23,244,245],{},"Lenovo のカーネルドライバは1本も入っていなかった。"," マウスやキーボードのクラスに独自のフィルタドライバを挟んでもいない。すべて Windows 標準のままだ。",[19,248,249,250,253],{},"ここで方向が定まる。カーネルに手が入っていないのなら、中ボタンスクロールは",[23,251,252],{},"ユーザーモードの常駐プログラムが、独自の HID インターフェースを読んでホイール操作を合成している","しかない。",[19,255,256,257],{},"そして、その構造なら壊れ方の非対称性が説明できる。キー入力と左右クリックは OS 標準の HID 経路をそのまま流れるので無傷。",[23,258,259],{},"常駐プログラムに依存するスクロールだけが、単独で落ちる。",[14,261,263],{"id":262},"空振り-その2-二世代のドライバが相打ちしている説","空振り その2 — 二世代のドライバが相打ちしている説",[19,265,266],{},"インストール済みソフトを見ると、思わぬものが出てきた。",[80,268,269,282],{},[83,270,271],{},[86,272,273,276,279],{},[89,274,275],{},"ソフト名",[89,277,278],{},"バージョン",[89,280,281],{},"サービス",[96,283,284,297],{},[86,285,286,289,292],{},[101,287,288],{},"ThinkPad TrackPoint Keyboard II Software",[101,290,291],{},"1.0.8.06241",[101,293,294],{},[64,295,296],{},"ExternalTPKBSvc",[86,298,299,302,305],{},[101,300,301],{},"ThinkPad Compact Keyboard with TrackPoint driver",[101,303,304],{},"1.5.6.0",[101,306,307],{},[64,308,309],{},"ThinkPadKBSvc",[19,311,312,315],{},[23,313,314],{},"第2世代用と第1世代用のドライバソフトが両方入っていて、両方のサービスが同時に走っていた。"," つないでいるキーボードは2台とも第2世代なので、第1世代用は本来不要だ。",[19,317,318,319,26],{},"さらにインストール先を覗くと、両方のフォルダに",[23,320,321],{},"同名の実行ファイルが揃っている",[169,323,326],{"className":324,"code":325,"language":174},[172],"HScrollFun.exe   ← HScroll = スクロール機能の実体\nMainCpl.exe      ← 設定パネル／トレイ常駐\nosd.exe          ← 画面表示（Caps Lock 等）\nSetSpeed.exe     ← ポインタ速度\n",[64,327,325],{"__ignoreMap":177},[19,329,330,331,334,335,338],{},"そしてスタートアップ登録が、2世代分そろって並んでいた。",[64,332,333],{},"aHScrollutility","（第1世代）と ",[64,336,337],{},"anHScrollutility","（第2世代）という具合に、接頭辞だけ違う同じ顔ぶれが二重に登録されている。",[19,340,341],{},"ここで「同じ名前・同じ機能のプロセスが2セット同時に起動しようとして、ミューテックスの取り合いで相打ちになるレースコンディションだ」と考えた。起動タイミングで勝敗が変わるなら、「電源オフ→オンだと直る」という確率的な挙動も説明がつく。",[19,343,344,345,26],{},"もっともらしい。しかし",[23,346,347],{},"これも外れだった",[14,349,350],{"id":350},"全滅していた",[19,352,353],{},"症状が出ている最中に、常駐プロセスの生死を数えた。ここが分岐点になった。",[80,355,356,369],{},[83,357,358],{},[86,359,360,363,366],{},[89,361,362],{},"プロセス",[89,364,365],{},"セッション",[89,367,368],{},"状態",[96,370,371,383,393,404,416,433],{},[86,372,373,377,380],{},[101,374,375],{},[64,376,296],{},[101,378,379],{},"0",[101,381,382],{},"動いている",[86,384,385,389,391],{},[101,386,387],{},[64,388,309],{},[101,390,379],{},[101,392,382],{},[86,394,395,400,402],{},[101,396,397],{},[64,398,399],{},"logonsetsvc",[101,401,379],{},[101,403,382],{},[86,405,406,411,414],{},[101,407,408],{},[64,409,410],{},"logonset",[101,412,413],{},"1",[101,415,382],{},[86,417,418,425,428],{},[101,419,420],{},[23,421,422],{},[64,423,424],{},"HScrollFun",[101,426,427],{},"—",[101,429,430],{},[23,431,432],{},"いない",[86,434,435,447,449],{},[101,436,437,440,441,440,444],{},[64,438,439],{},"MainCpl"," / ",[64,442,443],{},"osd",[64,445,446],{},"SetSpeed",[101,448,427],{},[101,450,432],{},[19,452,453],{},[23,454,455,456,459],{},"スクロールの実体である ",[64,457,458],{},"HScrollFun.exe"," が、そもそも起動していなかった。",[19,461,462],{},"レースコンディションどころではない。相打ちする以前に、どちらも土俵に上がっていなかった。",[19,464,465,466,469,470,473,474,477],{},"理由はレジストリにあった。Windows はスタートアップの有効・無効を ",[64,467,468],{},"StartupApproved"," というキーで管理していて、先頭バイトが ",[64,471,472],{},"2"," なら有効、",[64,475,476],{},"3"," なら無効を意味する。",[169,479,482],{"className":480,"code":481,"language":174},[172],"anHScrollutility  3   ← 第2世代スクロール：無効\nanRunMaincpl      3      anOSD  3      anSetSpeed  3\naHScrollutility   3   ← 第1世代スクロール：無効\naRunMaincpl       3      aOSD   3      aSetSpeed   3\n",[64,483,481],{"__ignoreMap":177},[19,485,486,489,490,493,494,497],{},[23,487,488],{},"8本すべてが無効","。あとで 32bit 側のビュー（",[64,491,492],{},"WOW6432Node","）にも旧世代の3本が登録されていて、そちらも同じく無効だと分かった。",[23,495,496],{},"合計11本、全滅","である。",[19,499,500],{},"おそらく過去のどこかで、起動を軽くする目的でタスクマネージャーのスタートアップタブからまとめて無効化されたのだろう。誰がいつ切ったかまでは追えなかった。",[19,502,503],{},"壊れていたときの流れを追うと、こうなる。",[505,506,507,512],"figure",{},[508,509],"img",{"src":510,"alt":511},"/images/thinkpad-trackpoint-scroll-dies-after-sleep/figure-01.svg","改善前。スリープから復帰してもスタートアップ登録が無効のため、スクロールを合成する常駐 HScrollFun.exe が起動されず、プロセス不在のままになる流れ",[513,514,515],"figcaption",{},"図1: 復帰後にスクロールだけが死ぬ経路。起動を担うはずのスタートアップ登録が無効で、常駐が一度も立ち上がらない",[19,517,518,519],{},"キー入力と左右クリックはこの図に登場しない。それらはキーボードから Windows へまっすぐ流れるので、右端の常駐が不在でも何の影響も受けない。",[23,520,521],{},"この図に描かれている経路だけが、スクロールの生死を握っている。",[14,523,524],{"id":524},"犯人を1本起動して確定させる",[19,526,527],{},"仮説が正しいなら、その1本を手で起動すれば直るはずだ。削除でもインストールでもなく、落とせば元に戻る可逆な操作でもある。",[169,529,533],{"className":530,"code":531,"language":532,"meta":177,"style":177},"language-powershell shiki shiki-themes vitesse-light vitesse-light","Start-Process \"C:\\Program Files (x86)\\Lenovo\\External TrackPoint Keyboard driver\\HScrollFun.exe\"\n","powershell",[64,534,535],{"__ignoreMap":177},[536,537,540],"span",{"class":538,"line":539},"line",1,[536,541,531],{},[19,543,544],{},"3秒後も生きていた（PID 36644, セッション1）。すぐ落ちるわけではない。",[19,546,547,548,26],{},"そして実機で確認してもらったところ、",[23,549,550],{},"中ボタンスクロールが復活した",[19,552,553,555],{},[64,554,458],{}," の不在が直接原因である、と確定した。",[14,557,559],{"id":558},"外部レビューで否定した仮説が3つ突き返される","外部レビューで、否定した仮説が3つ突き返される",[19,561,562],{},"ここで OpenAI の Codex（gpt-5.6-sol）に調査記録を渡し、「やったこと・やっていないこと・仮説」をレビューしてもらった。自分で2回も仮説を外している以上、第三者の目を入れる価値がある。",[19,564,565],{},"返ってきた指摘は容赦がなかった。",[19,567,568,571,572,574],{},[23,569,570],{},"1つめ。「スタートアップが無効だから二世代競合は否定できる」は成立しない。"," ",[64,573,468],{}," が止めるのは Explorer 経由の起動だけで、サービスや独自ランチャーからの起動までは止めない。実際、Codex が独自に調べたところ次の混在が見つかった。",[31,576,577,587,602],{},[34,578,579,580,582,583,586],{},"サービスとして登録されている ",[64,581,399],{}," の実体は",[23,584,585],{},"第1世代側","のフォルダにある",[34,588,589,590,593,594,597,598,601],{},"しかし ",[64,591,592],{},"HKLM\\Software\\ServiceAppPath"," は",[23,595,596],{},"第2世代側","の ",[64,599,600],{},"logonset.exe"," を指している",[34,603,604,605,608],{},"両世代が ",[64,606,607],{},"HKLM\\Software\\Lenovo\\autolaunch"," という同じキーを共有している",[19,610,611,612,615,616,619,620,622,623,626],{},"自分でも確認したところ、そのとおりだった。",[64,613,614],{},"autolaunch"," に書かれた ",[64,617,618],{},"installed_version"," は ",[64,621,304],{},"、つまり",[23,624,625],{},"第1世代のバージョン","で上書きされている。「旧世代のサービスが新世代の実行ファイルを起動する」というねじれた状態になっていた。",[19,628,629,632],{},[23,630,631],{},"2つめ。「プロセスが生きているか」を見るだけでは自己復旧の判定として足りない。"," 手動起動で直ったという事実は、次の2つのどちらでも説明できてしまう。",[31,634,635,638],{},[34,636,637],{},"常駐プログラムが動いている間じゅう、ずっとスクロールを合成している",[34,639,640],{},"起動した瞬間にデバイスと結び直しただけで、あとは別の何かが担っている",[19,642,643,644,647],{},"もし後者なら、",[23,645,646],{},"プロセスは生きているのに機能だけ死んでいる","状態がありえて、生存確認では救えない。",[19,649,650],{},[23,651,652],{},"3つめ。否定の根拠が弱いものが他にもある。",[31,654,655,658,665],{},[34,656,657],{},"「2台とも同じ世代だから競合しない」— 単一インスタンスのユーティリティが最初の1台だけを掴む実装は普通にありうる",[34,659,660,661,664],{},"「セレクティブサスペンドが無効だからUSB電源管理は無関係」— 否定できるのは動作中のアイドルサスペンドだけで、",[23,662,663],{},"S3スリープへの遷移に伴うデバイス電源状態の変化は別の話","。これは明確にこちらの誤りだった",[34,666,667],{},"「幽霊デバイスだから無関係」— 現在いないことしか示さない。過去の復帰時にリセット失敗が起き、それが引き金になった可能性までは消せない",[14,669,671],{"id":670},"決定打は人間の目だった","決定打は、人間の目だった",[19,673,674],{},"指摘の2つめは対策の有効性に直結する。ところがこれは、意図せず解決した。",[19,676,677,678,680],{},"検証のために ",[64,679,458],{}," を一度落とし、タスクで復旧させる実験をしていたとき、画面の前にいた本人からこう報告が来た。",[682,683,684],"blockquote",{},[19,685,686],{},"「落ちました」と打った時、確かにスクロールができてたのができなくなった。「タスクを発火させます」と言ったその後に、ターミナルが一瞬ちらついてスクロールできるようになった",[19,688,689],{},[23,690,691],{},"プロセスを落とした瞬間にスクロールが死に、起こし直した瞬間に生き返った。",[19,693,694,695,697,698,701],{},"これで前者が確定する。",[64,696,458],{}," は常駐している間ずっとスクロールを合成しており、",[23,699,700],{},"プロセスの生存がそのまま機能の生存","を意味する。ログや API では取れなかった因果が、目の前の人間の観察一発で埋まった。",[19,703,704],{},"なお、このプロセスは通常権限からは終了できない。",[169,706,709],{"className":707,"code":708,"language":174},[172],"Stop-Process : アクセスが拒否されました\n",[64,710,708],{"__ignoreMap":177},[19,712,713],{},"入力を扱うソフトとして高い整合性レベル（uiAccess）で動いているためで、落とすには昇格が必要だった。副作用として、実行ファイルのパスも通常権限では読み取れない。",[14,715,717],{"id":716},"対策-落ちていたら起こし直す","対策 — 落ちていたら起こし直す",[19,719,720],{},"原因が「起動していないこと」なので、対策は「確実に起動させること」になる。スタートアップを有効に戻す手もあるが、それだけでは復帰中に落ちた場合を拾えない。そこでタスクスケジューラに見張り役を置いた。",[31,722,723,729,739],{},[34,724,725,728],{},[23,726,727],{},"ログオン時","（20秒遅延）",[34,730,731,734,735,738],{},[23,732,733],{},"スリープ復帰時"," — ",[64,736,737],{},"Microsoft-Windows-Power-Troubleshooter"," のイベントID 1 を購読（15秒遅延）",[34,740,741,744],{},[23,742,743],{},"ロック解除時","（5秒遅延）",[19,746,747,748,750],{},"動作は「同じセッション内に ",[64,749,424],{}," がいなければ起動する」。いれば何もしないので二重起動しない。遅延を入れているのは、復帰直後は USB の再列挙が終わっていない可能性があるためだ。管理者権限は不要で、外部ファイルも置いていない。",[19,752,753,754,757],{},"図1で",[23,755,756],{},"誰もいなかった真ん中の位置","に、見張りが入る。",[505,759,760,764],{},[508,761],{"src":762,"alt":763},"/images/thinkpad-trackpoint-scroll-dies-after-sleep/figure-02.svg","改善後。復帰イベントを合図に見張りタスクが起動し、同一セッション内で常駐の生存を確認して、不在のときだけ HScrollFun.exe を起こし直す流れ",[513,765,766],{},"図2: 同じ位置に見張りタスクを置いた後。復帰を合図に生死を確かめ、落ちていたときだけ起こし直す",[19,768,769,770,571,773,775],{},"2枚を見比べると、変えたのは1点だけだと分かる。",[23,771,772],{},"起動の合図を「ログオン時に1回」から「復帰・ログオン・ロック解除のたび」に増やし、その合図を受け取る役を常駐の手前に置いた。",[64,774,458],{}," 自身にも、Lenovo のドライバにも手を入れていない。",[19,777,778,779,782,783,786,787,790],{},"Codex の指摘を受けて直した点が2つある。多重起動ポリシーを ",[64,780,781],{},"IgnoreNew"," から ",[64,784,785],{},"Parallel"," に変えた（前者だと実行中に届いた復帰トリガーが捨てられる）。それと、次に症状が出たとき「プロセスがいたのか、いなかったのか」を証拠で言えるよう、実行結果を ",[64,788,789],{},"%LOCALAPPDATA%\\ThinkPadScrollWatchdog\\watchdog.log"," に追記するようにした。",[792,793,795],"h3",{"id":794},"登録できたで終わらせない","「登録できた」で終わらせない",[19,797,798,799,802,803,806],{},"タスクを登録した直後、",[64,800,801],{},"LastTaskResult: 0"," が返ってきた。これは「タスクが正常終了した」以上のことを何も意味しない。",[23,804,805],{},"復旧したかどうかは別の話","だ。",[19,808,809],{},"そこで実際に壊して試した。最初の試行はこう出た。",[169,811,814],{"className":812,"code":813,"language":174},[172],"BEFORE PID : 36644\nAFTER KILL : 1 process      ← 落ちていない\nAFTER TASK : 36644          ← 同じPIDのまま\n",[64,815,813],{"__ignoreMap":177},[19,817,818,821,822,825,826,829],{},[64,819,820],{},"Stop-Process"," が失敗していたのに、",[64,823,824],{},"-ErrorAction SilentlyContinue"," でエラーを握り潰していた。",[23,827,828],{},"検証手順そのものが壊れていた","わけで、危うく「動きました」と報告するところだった。",[19,831,832],{},"昇格して落とし直し、あらためて通した結果がこれになる。",[169,834,837],{"className":835,"code":836,"language":174},[172],"AFTER KILL count : 0        ← 確かに落ちた（この間スクロールは死んでいた）\nREVIVED PID : 38376         ← 別のPIDで復活\n",[64,838,836],{"__ignoreMap":177},[19,840,841],{},"そして在中時にタスクを走らせると、二重起動せずログにこう残る。",[169,843,846],{"className":844,"code":845,"language":174},[172],"2026-08-11 13:13:35 sid=1 ALIVE pid=38376\n",[64,847,845],{"__ignoreMap":177},[19,849,850],{},"不在なら起こす、在中なら手を出さない。両側とも実機で確認できた。",[14,852,853],{"id":853},"残っている謎",[19,855,856,857,26],{},"正直に書くと、",[23,858,859],{},"当初の症状すべてを説明しきれてはいない",[19,861,862,863,865],{},"最大の穴は「電源オフ→オンなら直る」という体験だ。スタートアップが11本とも無効なら、コールドブートでも ",[64,864,458],{}," は起動しないはずで、辻褄が合わない。",[19,867,868],{},"別の起動経路を探して、サービスのバイナリを文字列走査した。",[80,870,871,892],{},[83,872,873],{},[86,874,875,878,882,887],{},[89,876,877],{},"バイナリ",[89,879,880],{},[64,881,424],{},[89,883,884],{},[64,885,886],{},"CreateProcessAsUser",[89,888,889],{},[64,890,891],{},"WTSGetActiveConsoleSessionId",[96,893,894,908],{},[86,895,896,901,904,906],{},[101,897,898],{},[64,899,900],{},"ExternalTPKBSvc.exe",[101,902,903],{},"無し",[101,905,903],{},[101,907,903],{},[86,909,910,915,917,922],{},[101,911,912],{},[64,913,914],{},"logonsetsvc.exe",[101,916,903],{},[101,918,919],{},[23,920,921],{},"有り",[101,923,924],{},[23,925,921],{},[19,927,928,930,931,934,935,937],{},[64,929,914],{}," は「サービスからユーザーセッションにプロセスを起こす」ときの定番の組み合わせを持っている。",[23,932,933],{},"起こす能力はある","。ただし起動対象の名前が文字列として現れないため、これが ",[64,936,458],{}," を起こしているという確証は取れなかった。",[19,939,940,941,944],{},"もう一つ、スリープ復帰との因果も実は未検証のままだ。今回症状を見つけたのは",[23,942,943],{},"再起動から約10分後","であって、スリープ復帰の直後ではない。つまり今回観測したのは「復帰でクラッシュした状態」ではなく「最初から起動していない状態」だった可能性が高い。両者を切り分けるには、実際にスリープ復帰させて観測するしかない。ログを残すようにしたのはそのためでもある。",[14,946,947],{"id":947},"この件から持ち帰れること",[31,949,950,956,962,972,980],{},[34,951,952,955],{},[23,953,954],{},"申告された条件が矛盾していたら、そこが手がかりになる。"," 「再起動で直らないのに電源オフで直る」という噛み合わなさが、最初に疑う対象を決めてくれた。結果として外れたが、外れ方が次の一手を教えてくれた",[34,957,958,961],{},[23,959,960],{},"壊れ方の非対称性を見る。"," 全部が死ぬのか、一部だけが死ぬのか。今回は「キーは効くのにスクロールだけ死ぬ」が、カーネルではなくユーザーモードを見ろという道標になった",[34,963,964,967,968,971],{},[23,965,966],{},"もっともらしい仮説ほど、証拠で潰す。"," 死んだUSBポートも二世代競合も、話としてはよくできていた。前者は ",[64,969,970],{},"Present: False"," の一行で、後者はプロセス一覧で消えた",[34,973,974,979],{},[23,975,976,978],{},[64,977,801],{}," は「直った」ではない。"," 壊して直ることを見るまで、対策が効いた証拠は何もない",[34,981,982,985,986,989],{},[23,983,984],{},"外部レビューは、自分の否定を疑うために使う。"," 今回 Codex が刺したのは新しい発見ではなく、",[23,987,988],{},"こちらが「無関係」と切り捨てた根拠の甘さ","だった。実際1つは明確な誤りだった",[991,992],"hr",{},[19,994,995],{},[996,997,998,999,1002],"em",{},"調査記録の一次資料は ",[64,1000,1001],{},"memo/2026-08-11/thinkpad-trackpoint-scroll-investigation.md"," に置いてある。",[1004,1005,1006],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":177,"searchDepth":1008,"depth":1008,"links":1009},2,[1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1023,1024],{"id":16,"depth":1008,"text":17},{"id":59,"depth":1008,"text":59},{"id":163,"depth":1008,"text":164},{"id":215,"depth":1008,"text":216},{"id":262,"depth":1008,"text":263},{"id":350,"depth":1008,"text":350},{"id":524,"depth":1008,"text":524},{"id":558,"depth":1008,"text":559},{"id":670,"depth":1008,"text":671},{"id":716,"depth":1008,"text":717,"children":1020},[1021],{"id":794,"depth":1022,"text":795},3,{"id":853,"depth":1008,"text":853},{"id":947,"depth":1008,"text":947},"dev",null,"スリープ復帰後、中ボタン＋赤ポチのスクロールだけが効かなくなる。再起動では直らないのに、電源を切ると直る。この矛盾した条件を手がかりに犯人を特定し、自動復旧を組むまでの記録。外した仮説も全部残す。","md",{},true,"/thinkpad-trackpoint-scroll-dies-after-sleep",false,"2026-08-11T00:00:00.000Z",{"title":5,"description":1027},"2026-08/2026-08-11/thinkpad-trackpoint-scroll-dies-after-sleep",[1037,1038,1039,1040,1041,1042],"Windows","ThinkPad","トラブルシューティング","USB","タスクスケジューラ","Codex","memo","E9e_9fax1gYVtmTMc4PhRbNpQkph2zgGwdG7vM2oW6A",[],[1047,1051,1055,1059,1063],{"title":1048,"path":1049,"publishedAt":1050},"ThinkPad TrackPoint Keyboard II で赤ポチスクロールが効かなくなった時の直し方","/thinkpad-trackpoint-keyboard-scroll-fix","2025-12-06T00:00:00.000Z",{"title":1052,"path":1053,"publishedAt":1054},"税務申告ソフトが起動しない原因を調べたら、消えていたのはプログラム本体だけだった","/tax-software-recovery-after-deletion-incident","2026-08-01T00:00:00.000Z",{"title":1056,"path":1057,"publishedAt":1058},"1Password EnvironmentsのMCP連携がWindowsで解禁 — Claude Code / Codexへの設定手順と実機検証","/1password-mcp-windows-claude-codex","2026-07-18T00:00:00.000Z",{"title":1060,"path":1061,"publishedAt":1062},"Dropboxが2.6万件同期する謎とSQL Serverの残骸を整理した話","/pc-environment-cleanup","2026-05-09T00:00:00.000Z",{"title":1064,"path":1065,"publishedAt":1066},"2026年4月29日の開発日記 - 蔵書841冊タグ付け／ScrollArticle共通化／GIF→SVGアニメ","/2026-04-29-diary","2026-04-29T00:00:00.000Z","https://log.eurekapu.com/og/blog/thinkpad-trackpoint-scroll-dies-after-sleep.png?v=2026-08-11T00%3A00%3A00.000Z&title=%E9%9B%BB%E6%BA%90%E3%82%92%E5%88%87%E3%82%8B%E3%81%A8%E7%9B%B4%E3%82%8B%E3%83%90%E3%82%B0%E3%82%92%E8%BF%BD%E3%81%86%20%E2%80%94%20ThinkPad%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%E3%81%AE%E3%82%B9%E3%82%AF%E3%83%AD%E3%83%BC%E3%83%AB%E3%81%A0%E3%81%91%E3%81%8C%E6%AD%BB%E3%81%AC%E7%90%86%E7%94%B1&author=Kei%20Komatsu&sig=aaf4e4859131e56d",1786424469049]