Возможно, это не лучшее решение, но вы можете сделать почти все, что угодно, немного креативнее и AutoHotKey .
Вот пример сценария AHK, который я написал. Он выполняет пользовательский код всякий раз, когда пользователь нажимает backspace
или delete
в окне блокнота. Нажатие Ctrl+Shift+z
выдаст вам сообщение с историей удаления. Он использует буфер обмена, но восстанавливает его до первоначального значения.
Это был 5-минутный хак, так что я уверен, что есть проблемы с ним. Используйте на свой страх и риск:)
#NoEnv
#SingleInstance
SendMode Input
_removalHistory =
_backupClipboard =
#IfWinActive, ahk_classNotepad
{
Backspace::Delete("left")
Delete::Delete("right")
^+z::MsgBox %_removalHistory%
}
Delete(direction) {
global
BackupAndClearClipboard()
length := GetSelectedLength()
if length = 0 SelectOneCharacter(direction)
Copy()
_removalHistory = %_removalHistory%%clipboard%
Send {Delete}
RestoreClipboard()
}
GetSelectedLength() {
local length = 0
Copy()
StringLen, length, clipboard
return length
}
SelectOneCharacter(direction) {
if (direction = "left") {
Send +{Left}
}
else if (direction = "right") {
Send +{Right}
}
}
Copy() {
Send ^c
ClipWait 0.01
}
BackupAndClearClipboard() {
global
_backupClipboard := ClipboardAll
clipboard =
}
RestoreClipboard() {
global
clipboard := _backupClipboard
_backupClipboard = ;free memory
}