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

40

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

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

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

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

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

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

Рори О'Кейн
источник
1
Я получаю такое же поведение в блокноте в WinXP.
djhowell
2
Я также получаю такое поведение при переименовании файла в File Explorer в Windows 7. То есть, когда я выбираю файл, нажмите F2, переместите курсор в конец слова, которое я хочу удалить, и попробуйте Ctrl+ Backspace.
Рори О'Кейн

Ответы:

25

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

Рори О'Кейн
источник
19

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

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

Джаред Харли
источник
Просто хотел добавить, что некоторые приложения справляются с этим еще хуже и фактически не отображают управляющий символ. Вы можете видеть это, когда ничего не происходит, ctrl+backspaceи, кажется, что нажатие кнопки delete ничего не делает. Я думаю, что блокнот для Vista сделал это.
Джошуа
6
Вставленный символ 127 - символ удаления.
1
Ссылка на ASCII char 127, символ удаления , в Википедии
Rory O'Kane
Это объясняет очевидное «что», но не «почему» :-(
Мафу
14

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

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

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

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

djhowell
источник
1
Также в этой же статье чтение комментариев добавляет немного больше понимания: blogs.msdn.com/oldnewthing/archive/2007/10/11/…
тяжелый
0

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

th3dude
источник