web-browser qutebrowser. Русификация клавиш. Настройки под emacs

Автор mrgoodvin, 26 октября 2019, 02:39:49

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

mrgoodvin

Всех приветствую! Ниже речь о русификации и украинизации клавиш для qutebrowser и очень кратко настройки, клавиши под emacs, и также как выбрать в качестве редактора emacs.
Файлы привязок клавиш и очень краткая настройка как отправная точка прилагаются также ниже...
Браузер изначально делался под клавиши редактора vim и существуют и готовые решения сочетания клавиш для emacs которые укаазны в помощи, раздел "Configuring qutebrowser". По скольку заметил их позже, прописал настройки самому. По этому вы можете воспользоваться гтовыми решениями (указаны ниже) или можете скачать мой файл как базовый. Прописывать все это дело заняло некоторое время, так что думаю, готовая конфигурация сэкономит вам немного времени.
Гтовые конфиги в сети:
https://gitlab.com/jgkamat/qutemacs/blob/master/qutemacs.py
https://gitlab.com/Kaligule/qutebrowser-emacs-config/blob/master/config.py
http://me0w.net/pit/1540882719
Моя конфигурация ниже, два файла.
~/.config/qutebrowser/config.py
~/.config/qutebrowser/keys-emacs.py


Далее о украинизации/русификации клавиш для web-браузера.
(обновление) Предыдущий способ приводил к падению браузера из-за ограничения стека рекурсивного вызова ранее созданного метода keyevent. Ниже метод обновленный более простой но и предполагающий изменения двух файлов и создания одного нового по пути: /usr/lib/python3/dist-packages/qutebrowser/keyinput

• создаём файл скрипта multiple_keyboard.py:

#!/usr/bin/env python3
# coding: utf-8

other_keys    = 'ФИСВУАПРШОЛДЬТЩЗЙКЫІЕГМЦЧНЯБЮ,ХЪЇжЖЭЄЁʼ№'
en_keys       = 'ABCDEFGHIJKLMNOPQRSSTUVWXYZ,./[]]:;''``#' \
                "`,./;'[]"
other_keys_mm = '~<>?:"{}'
def keyevent(event):
    key = event.key()
    if key > 0 and key <= 0x110000:
        ch = chr(key)
        i = other_keys.find(ch)
        if i == -1:
            i = other_keys_mm.find(ch)
            if i != -1:
                i = len(other_keys) - 1 + i

        if i != -1:
            ch = en_keys[i]
            key = ord(ch)
            event.key = lambda: key
            event.text = lambda: ch
    return key


• Далее редактируем в basekeyparser.py метод handle заменяя строку key = e.key() на key = keyevent(e). Пример ниже:

...
from qutebrowser.keyinput import keyutils

from qutebrowser.keyinput.multiple_keyboard import keyevent #added ~31
...
    def handle(self, e, *, dry_run=False):
        """Handle a new keypress.
...
        Return:
            A QKeySequence match.
        """

# key = e.key() # comment/replace ~168
        key = keyevent(e) # added
...


• Для хинтов полноценной работы добавляем строку keyevent(e) в: файле modeparsers.py, классе HintKeyParser, методе handle начала. Примерно так:

...
from qutebrowser.utils import usertypes, log, message, objreg, utils

from qutebrowser.keyinput.multiple_keyboard import keyevent #added ~37
...
class HintKeyParser(CommandKeyParser):
...
    def handle(self, e, *, dry_run=False):
        """Handle a new keypress and call the respective handlers.
...
            True if the match has been handled, False otherwise.
        """
        keyevent(e) # added ~247
...


Собственно все, теперь браузер должен откликаться и на сочетания клавиш русской/украинской раскладок клавиатуры.

Редактор выбирается строкой в ~/.config/qutebrowser/config.py:
c.editor.command = ["urxvt","-e","emacs","-nw","+{line}:{column}","{file}"]
или
c.editor.command = ["lxterminal","--no-remote","-e","nvim","-n","-c cal cursor({line},{column})","{file}"]
или же для графической версии строка подобно следующему (смотрим документацию к браузеру)
c.editor.command = ['gvim', '-f', '{file}', '-c', 'normal {line}G{column0}l']