Windows 11で日本語入力中に半角直接入力になる問題を直した
Windows 11でGoogle日本語入力/ATOKがコピー後に半角直接入力になる問題を直した
症状
Windows 11環境で、日本語入力まわりの妙な不具合が発生していた。
自分の環境では、Google日本語入力やATOKなどのサードパーティIMEを使っているときに、任意のアプリのテキストボックス内でテキストを選択し、Ctrl + C でコピーすると、その直後の入力が日本語入力にならず、半角直接入力のような状態になってしまう。
見た目上は日本語入力モードのままに見えるが、実際にはローマ字入力がIMEに渡らず、英字としてそのまま入力されるような挙動になる。
たとえば、nihongo と入力して変換したいのに、変換候補に乗らず、そのまま半角英字として入ってしまうような状態。
なお、自分の環境では以下のような特徴があった。
- Windows標準の新しいMicrosoft IMEでは発生しない
- Google日本語入力やATOKなどのサードパーティIMEで発生する
Ctrl + Cでコピーした直後に発生しやすい- スタートメニューなど別のテキストボックスで何回か入力すると、また変換可能な状態に戻ることがある
- 入力モード表示は変わっていないように見える
自分のWindowsバージョンは以下。
Microsoft Windows [Version 10.0.22631.6199]
原因
Microsoft Japan Windows Technology Support Blog に、かなり近い内容の公式情報が出ていた。
参考:
コピー直後のはじめのキー入力が確定されてしまう問題について | Microsoft Japan Windows Technology Support Blog
公式記事によると、以前のバージョンのMicrosoft IMEや他社の日本語入力ソフトウェアを使っている場合に、コピー操作後のはじめのキー入力が意図せず確定される問題が発生する場合があるとのこと。
原因は、タッチキーボードの動作に関連するWindows OS側の問題とされている。
つまり、Google日本語入力やATOKだけが壊れているというより、Windows側の入力コンテキストやタッチキーボード関連の状態管理が壊れていて、サードパーティIMEがその影響を受けているように見える。
対処方法
タッチキーボードをほとんど使わない環境であれば、以下の2つのレジストリ値を削除してから、サインアウトして再サインインする。
コマンドプロンプトで以下を実行する。
reg delete HKCU\Software\Microsoft\InputMethod\Settings\Common /v TouchKeyboardHasEverShown /f
reg delete HKCU\Software\Microsoft\InputMethod\Settings\Common /v InputPanelPageLastOpenTime /f
HKCU 配下なので、基本的に管理者権限は不要。
普段使っているユーザーで実行する。
実行結果
自分の環境では、1つ目は正常に削除できた。
C:\Windows\System32>reg delete HKCU\Software\Microsoft\InputMethod\Settings\Common /v TouchKeyboardHasEverShown /f
この操作を正しく終了しました。
2つ目は存在しなかった。
C:\Windows\System32>reg delete HKCU\Software\Microsoft\InputMethod\Settings\Common /v InputPanelPageLastOpenTime /f
エラー: 指定されたレジストリ キーまたは値が見つかりませんでした
これは問題なし。
そのレジストリ値が元から存在しなかった、または既に削除済みだったという意味。
このあと、サインアウトして再サインインしたところ、問題は解消した。
確認用コマンド
削除されたか確認したい場合は、以下を実行する。
reg query HKCU\Software\Microsoft\InputMethod\Settings\Common /v TouchKeyboardHasEverShown
reg query HKCU\Software\Microsoft\InputMethod\Settings\Common /v InputPanelPageLastOpenTime
どちらも以下のようなエラーになれば、値は存在していない。
エラー: 指定されたレジストリ キーまたは値が見つかりませんでした
PowerShellスクリプト版
毎回コマンドを打つのが面倒な場合は、以下のようなPowerShellスクリプトにしておくとよい。
ファイル名例:
Fix-ImeAfterCopy.ps1
内容:
# Fix-ImeAfterCopy.ps1
# Windows 11でコピー直後に日本語IMEの最初の入力が直接入力/確定される問題の回避策
# 対象: 現在のユーザー HKCU
$regKeyPs = "HKCU:\Software\Microsoft\InputMethod\Settings\Common"
$regKeyReg = "HKCU\Software\Microsoft\InputMethod\Settings\Common"
$values = @(
"TouchKeyboardHasEverShown",
"InputPanelPageLastOpenTime"
)
Write-Host "IMEコピー直後入力問題の回避レジストリ処理を開始します..." -ForegroundColor Cyan
if (-not (Test-Path $regKeyPs)) {
Write-Host "対象キーが存在しません: $regKeyReg" -ForegroundColor Yellow
Write-Host "処理は不要、または既に問題の値が存在しない可能性があります。"
exit 0
}
# 念のためバックアップ
$backupPath = Join-Path $env:USERPROFILE ("Desktop\IME_InputMethod_Common_Backup_{0}.reg" -f (Get-Date -Format "yyyyMMdd_HHmmss"))
reg export $regKeyReg $backupPath /y | Out-Null
Write-Host "バックアップを作成しました: $backupPath"
foreach ($value in $values) {
try {
$exists = Get-ItemProperty -Path $regKeyPs -Name $value -ErrorAction SilentlyContinue
if ($null -ne $exists) {
Remove-ItemProperty -Path $regKeyPs -Name $value -ErrorAction Stop
Write-Host "削除しました: $value" -ForegroundColor Green
} else {
Write-Host "存在しませんでした: $value"
}
}
catch {
Write-Host "削除に失敗しました: $value" -ForegroundColor Red
Write-Host $_.Exception.Message
}
}
Write-Host ""
Write-Host "完了しました。効果を反映するため、サインアウトしてから再サインインしてください。" -ForegroundColor Cyan
Write-Host "再起動でも構いません。"
実行例:
powershell -NoProfile -ExecutionPolicy Bypass -File .\Fix-ImeAfterCopy.ps1
注意点
この対処は、タッチキーボードをほとんど使わない環境向け。
タッチキーボードを頻繁に使う場合は、Microsoft公式記事では「サインイン後にタッチキーボードを一度開いて閉じる」という対処も案内されている。
また、この問題はWindows OS側の問題とされているため、恒久的な修正というより回避策に近い。
Windows Update後やタッチキーボード使用後に再発した場合は、同じコマンドを再実行してからサインアウト・再サインインすると直る可能性がある。
まとめ
Google日本語入力やATOKで、コピー直後に日本語入力が効かず半角直接入力のようになる場合は、以下を試す。
reg delete HKCU\Software\Microsoft\InputMethod\Settings\Common /v TouchKeyboardHasEverShown /f
reg delete HKCU\Software\Microsoft\InputMethod\Settings\Common /v InputPanelPageLastOpenTime /f
その後、サインアウトして再サインインする。
自分の環境では、TouchKeyboardHasEverShown を削除し、InputPanelPageLastOpenTime は存在しない状態で、再サインイン後に問題が解消した。