37

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

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

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

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

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

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

4 ответа4

24

Вы можете исправить это поведение, переопределив комбинацию клавиш 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://superuser.com/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 чтобы ограничить горячую клавишу только программами, которые, как я знаю, не поддерживают этот ярлык.

17

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

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

11

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

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

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

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

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .