Вопрос или проблема
Существует ли приложение, которое имитирует поведение “Выбор для копирования и средний клик для вставки” в Windows? Я надеялся найти для этого скрипт AutoHotkey, но не смог. Может быть, кто-то здесь быстро напишет его для этого :).
Ну, есть True X-Mouse Gizmo, если это работает в вашей версии Windows (оно немного устарело).
Если вы ищете скрипт AutoHotkey, этот вероятно подойдет!
Вот реализация для копирования при
выборе. Вы можете просто выделить текст,
и он будет скопирован сразу
без необходимости нажимать ctrl+c.Удобная вставка средней кнопкой также
предоставляется, но с оговоркой.
Средняя кнопка полезна в браузерах, поэтому
есть короткий промежуток времени (настраиваемый),
когда вы можете вставить с помощью средней
кнопки после копирования, прежде чем восстанавливается
исходная функциональность средней кнопки.Кроме того, если вы нажмете правой
кнопкой, это отменит вставку средней кнопкой.Поскольку после выделения вы обычно
нажимаете левой кнопкой в
место, куда хотите вставить, чтобы
установить там фокус, это делается
автоматически при вставке средней кнопкой.Интеграция clipx также добавлена к
Ctrl+средняя кнопка.Я использую скрипт уже несколько
дней, и это довольно удобно.
Иногда всплывает подсказка копирования
ненадлежащим образом, когда что-то перетаскивается,
но это не вызывает никаких проблем.
Посмотрите на AutoClipX.
AutoClipX — это высоконастраиваемая программа, которая автоматически копирует выбранные объекты в буфер обмена Windows, такие как текст, файлы и папки. Быстро вставьте то, что скопировали, щелкнув кнопкой мыши! AutoClipX silently работает в области системного трей в то время как вы работаете как обычно.
Плоское копирование при выборе и плоская вставка средней кнопкой в Windows 11 (скрипт AutoHotkey):
cos_mousedrag_treshold := 20 ; пиксели
cos_copied_text := ""
#IfWinNotActive ahk_class ConsoleWindowClass
~lButton::
MouseGetPos, cos_mousedrag_x, cos_mousedrag_y
keywait lbutton
mousegetpos, cos_mousedrag_x2, cos_mousedrag_y2
if (abs(cos_mousedrag_x2 - cos_mousedrag_x) > cos_mousedrag_treshold
or abs(cos_mousedrag_y2 - cos_mousedrag_y) > cos_mousedrag_treshold)
{
wingetclass cos_class, A
if (cos_class == "Emacs")
sendinput !w
else {
previous_clipboard := clipboard
sendinput ^c
sleep 50 ; ждать, пока скопированный текст будет сохранен в буфере обмена
cos_copied_text := clipboard
clipboard := previous_clipboard
}
}
return
~mbutton::
WinGetClass cos_class, A
if (cos_class == "Emacs")
SendInput ^y
else {
previous_clipboard := clipboard
clipboard := cos_copied_text ; копировать сохраненный текст в буфер обмена
SendInput ^v
sleep 50 ; я не уверен, что это необходимо
clipboard := previous_clipboard
}
return
#IfWinNotActive
;; clipx
^mbutton::
sendinput ^+{insert}
return
Это измененная версия ответа @Snark, которая, в свою очередь, взята из анонимного поста.
Чтобы использовать этот скрипт AutoHotkey, вам нужно установить AutoHotkey на своем компьютере. После установки AutoHotkey сохраните этот скрипт как файл .ahk и затем дважды щелкните файл, чтобы запустить его. Скрипт будет работать в фоновом режиме, вы можете увидеть его значок на правой стороне панели задач.
Я решил эту задачу, используя AutoHotkey v2 (работает безупречно, во всей системе) (копирование, вставка и средняя кнопка мыши) -> https://github.com/capitanbarbosa/linux_middle_click_for_windows
#Requires AutoHotkey v2.0
MButton::
{
; Проверить, находится ли курсор над элементом управления редактированием или другим текстовым вводом
if (A_Cursor = "IBeam")
{
prevClipboard := A_Clipboard
A_Clipboard := ""
; Попытаться скопировать любой выделенный текст
Send("^c")
ClipWait(0.5)
if (A_Clipboard != "")
{
; Текст был выделен и скопирован, сохранить его в буфере обмена
return
}
; Если текст не был скопирован и ничего не выделено, вставить предыдущее содержимое буфера обмена
if (A_Clipboard == "")
{
A_Clipboard := prevClipboard
Send("^v")
return
}
; Если текст не был скопирован, попытаться выделить весь текст и скопировать
Send("^a^c")
ClipWait(0.5)
if (A_Clipboard != "")
{
; Текст был скопирован после выделения всего, хранить его в буфере обмена
Send("{Right}") ; Переместить курсор в конец текста
return
}
; Если все еще нет текста, вставить предыдущее содержимое буфера обмена
A_Clipboard := prevClipboard
Send("^v")
}
else
{
; Не над текстовым вводом, отправить обычный средний клик
Send("{MButton}")
}
}
SetWinDelay,2
CoordMode,Mouse
return
~MButton::
sleep 100
Send, ^v
return
~LButton::
MouseGetPos x0, y0
Loop
{
Sleep 20
GetKeyState keystate, LButton
IfEqual keystate, U, {
MouseGetPos x, y
break
}
}
if (x-x0 > 5 or x-x0 < -5 or y-y0 > 5 or y-y0 < -5)
{
Send ^c
}
if (A_PriorHotKey = A_ThisHotKey and A_TimeSincePriorHotkey < DllCall("GetDoubleClickTime"))
Send ^c
if (A_PriorHotKey = A_ThisHotKey and A_TimeSincePriorHotkey < DllCall("GetDoubleClickTime"))
doubleclick := true
return
#If doubleclick
~LButton::
doubleclick := false
if (A_PriorHotKey = A_ThisHotKey and A_TimeSincePriorHotkey < DllCall("GetDoubleClickTime"))
{
Send, ^c
}
return
Ответ или решение
Имитация функциональности "Выбрать для копирования и среднее нажатие для вставки" в Windows
Вопрос о том, как реализовать поведение «Выбрать для копирования и среднее нажатие для вставки» в Windows, актуален для пользователей, которые стремятся повысить свою продуктивность при работе с текстом. Это поведение, напоминающее систему управления буфером обмена в некоторых дистрибутивах Linux, можно воспроизвести с помощью различных инструментов.
Применение AutoHotkey
Одним из самых простых и доступных решений является использование AutoHotkey (AHK) — мощного программного обеспечения для автоматизации задач в Windows.
Сценарий AutoHotkey
Для начала, вам понадобится установить AutoHotkey на ваш компьютер. После установки создайте новый текстовый файл с расширением .ahk
и добавьте следующий сценарий:
#Requires AutoHotkey v2.0
MButton::
{
prevClipboard := A_Clipboard
A_Clipboard := ""
Send("^c")
ClipWait(0.5)
if (A_Clipboard != "")
{
return
}
A_Clipboard := prevClipboard
Send("^v")
}
Объяснение сценария:
- MButton: Это событие реагирует на нажатие средней кнопки мыши.
- Clipboard: Сценарий проверяет, если текст выделен, и копирует его в буфер обмена. Если нет выделенного текста, то производится вставка предыдущего содержимого буфера обмена.
Таким образом, если вы выделите текст и нажмете среднюю кнопку мыши, он будет скопирован, а затем вставлен в нужное место.
Этот сценарий можно доработать, чтобы учесть различные случаи использования и повысить его функциональность.
Альтернативы AutoHotkey
Если вы не хотите использовать AutoHotkey, есть и другие решения:
- True X-Mouse Gizmo: Это приложение, которое добавляет поведение, похожее на «Выбрать для копирования», но оно может не поддерживаться в более новых версиях Windows.
- AutoClipX: Конфигурируемое приложение, которое автоматически копирует выделенные объекты в буфер обмена. Оно работает в фоновом режиме и предоставляет дополнительные функции для работы с буфером обмена.
Советы по оптимизации
Чтобы добиться лучшего опыта работы с буфером обмена и реализацией функционала, приведенного выше, обратите внимание на следующее:
- Убедитесь, что текст корректно выделен перед копированием. Неправильное выделение может привести к ошибкам.
- Регулярно проверяйте настройки: некоторые изменения в системе или обновления могут вызвать сбои в работе установленных программ.
- Экспериментируйте с настройками AHK: изменения в задержках копирования и вставки могут улучшить ваш опыт.
Заключение
Реализация поведения «Выбрать для копирования и среднее нажатие для вставки» в Windows может значительно упростить процессы работы с текстом. С помощью AutoHotkey и других доступных решений, вы сможете адаптировать систему под свои нужды, что, несомненно, повысит вашу продуктивность. Пользователи, желающие расширить возможности стандартного буфера обмена, будут рады таким инструментам, как AutoClipX и True X-Mouse Gizmo, которые могут дополнить и обогатить ваш опыт работы с Windows.