“Выберите для копирования и нажмите среднюю кнопку мыши для вставки” в Windows

Вопрос или проблема

Существует ли приложение, которое имитирует поведение “Выбор для копирования и средний клик для вставки” в 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, есть и другие решения:

  1. True X-Mouse Gizmo: Это приложение, которое добавляет поведение, похожее на «Выбрать для копирования», но оно может не поддерживаться в более новых версиях Windows.
  2. AutoClipX: Конфигурируемое приложение, которое автоматически копирует выделенные объекты в буфер обмена. Оно работает в фоновом режиме и предоставляет дополнительные функции для работы с буфером обмена.

Советы по оптимизации

Чтобы добиться лучшего опыта работы с буфером обмена и реализацией функционала, приведенного выше, обратите внимание на следующее:

  • Убедитесь, что текст корректно выделен перед копированием. Неправильное выделение может привести к ошибкам.
  • Регулярно проверяйте настройки: некоторые изменения в системе или обновления могут вызвать сбои в работе установленных программ.
  • Экспериментируйте с настройками AHK: изменения в задержках копирования и вставки могут улучшить ваш опыт.

Заключение

Реализация поведения «Выбрать для копирования и среднее нажатие для вставки» в Windows может значительно упростить процессы работы с текстом. С помощью AutoHotkey и других доступных решений, вы сможете адаптировать систему под свои нужды, что, несомненно, повысит вашу продуктивность. Пользователи, желающие расширить возможности стандартного буфера обмена, будут рады таким инструментам, как AutoClipX и True X-Mouse Gizmo, которые могут дополнить и обогатить ваш опыт работы с Windows.

Оцените материал
Добавить комментарий

Капча загружается...