Как использовать фокус ввода / textarea в качестве условия для горячих клавиш

У меня есть AutoHotkey настроен таким образом, что признает Cmd+Left и Cmd+право нажатия клавиш, как назад/вперед навигации в Chrome.

проблема в том, что он также распознает эти клавиши при нажатии во время ввода текста в текстовые поля. Однако при вводе текста я хотел бы, чтобы эти комбинации клавиш выполняли другую функцию-переход к началу / концу строки, аналогичную Ctrl+Left/право.

есть ли способ, чтобы одно отображение работало для текстовых полей, а другое-для всего остального в AutoHotkey?

2
задан iglvzx
16.12.2022 1:52 Количество просмотров материала 2532
Распечатать страницу

1 ответ

самый глубокий AutoHotkey (AHK) может обнаружить в Google Chrome, связанные с веб-контента, является Chrome_RenderWidgetHostHWND1 управление. Этот элемент управления является viewport для веб-контента. Наш input и textarea HTML элементы немного глубже, внутри DOM отображаемого содержимого.

Итак, нам нужно найти способ общаться через эту стену между элементами HTML и AutoHotkey. К счастью, есть игрок на той же стороне, что и HTML, который может говорить Линго средство это: JavaScript!

как так? Проще говоря, JavaScript может выполнять действие, когда элемент получает или теряет фокус. Одним из таких действий может быть изменение заголовка страницы. Это в свою очередь изменяет заголовок окна Google Chrome, и AHK может читать заголовки окон!


Setup:

  1. установка InputFocusTitleChange.пользователь.js userscript. (Source)

  2. теперь вы можете использовать следующий синтаксис в AutoHotkey:

    SetTitleMatchMode, RegEx
    
    #x:: ; normal hotkey
         ; do something
        return
    
    #IfWinActive, \[AHK\] - Google Chrome$
        #x:: ; input/textarea focus hotkey
             ; do something
            return
    
    #IfWinActive
    

демонстрация:

когда HTML input или textarea элемент имеет фокус, userscript добавляет [AHK] в заголовок страницы, изменяя заголовок окна Google Chrome.

window titlegoogle chrome

AHK может использовать эту характеристику, если заголовок окна заканчивается на "[AHK] - Google Chrome" или нет, косвенно подключить HTML input/textarea фокус с набором команд.


Примечания:

из моего тестирования, есть два вопроса:

  1. если input/textarea уже сфокусирован при загрузке страницы,[AHK] не могут быть добавлены к заголовку страницы. Вы должны переместить фокус от элемента, а затем обратно, чтобы получить название, чтобы изменить.

  2. если input/textarea элемент генерируются динамически после загрузки страницы (это тоже при загрузке скрипта), то эти элементы не будут иметь никакого эффекта.

я буду продолжать работать над этим решением. Если у вас есть какие-либо предложения или знаете способ борьбы с этими JavaScript вопросы, пожалуйста, не стесняйтесь дайте мне знать, и/или внести свой вклад. Источник размещен выше и размещен на Github.

8
отвечен iglvzx 2022-12-17 09:40

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх