LINUX.ORG.RU

Добавить keyboard aliases для Up/Down/Left/Right/Enter/etc. в Xorg

 , , , ,


0

1

Я в Visual Studio Code давно привык к таким keyboard shortcuts:

Alt+H: Left (<- on keyboard)
Alt+L: Right (-> on keyboard)
Alt+J: Down (down arrow key on keyboard)
Alt+K: Up (up arrow key on keyboard)

Ctrl+J: Enter

Alt+A: Home (go to line start)
Alt+;: End (go to line end)

Ctrl+U: Shift+Home (select to line start)

и некоторые другие.

Считаю очень удобным т.к. не нужно переносить правую руку на часть клавиатуры со стрелками.

Возможно ли как то внести это всё в конфиг Xorg'а что бы они работали повсеместно, в том числе к примеру в браузере потому что пока я вводил это сообщение несколько раз нажал на автомате Ctrl+J.

Хотелось бы что бы Xorg перехватывал эти комбинации и посылал активному окну уже как бы ввод со специальной кнопки как если бы она была нажата (Left/Right/Home/Enter/etc.). Таким образом не пришлось бы это настраивать по отдельности во всех приложениях учитывая что некоторые из них не позволяют легко это сделать либо я не знаю как либо надо долго разбираться.



Последнее исправление: GuruOfTheWeb (всего исправлений: 2)

Возможно ли как то внести это всё в конфиг Xorg’а что бы они работали повсеместно, в том числе к примеру в браузере потому что пока я вводил это сообщение несколько раз нажал на автомате Ctrl+J.

Нет. То есть вообще совсем нет. Программные решения возможны, но настолько кривые, что лучше использовать программируемую клавиатуру.

anonymous
()
Ответ на: комментарий от anonymous

А, да, из наименее страшного — темы в GTK. Но по понятным причинам это работает только в GTK.

anonymous
()
Ответ на: комментарий от anonymous

Xdotool Easystroke и подобное

FFFUUUU!!! Ты бы ещё AutoHotKey посоветовал.

Xmodmap смотри в простейшем случае

Ни в каких случаях на это смотреть нельзя, особенно если у тебя больше одной раскладки, и ты полез в алфавитно-цифровой блок.

anonymous
()
Ответ на: комментарий от anonymous

Предложи решение получше

Клавиатура на QMK. Если денег нет или есть другие уважительные причины искать программных решений — evdev/uinput, это работает на уровне ядра, а не кривых иксов.

anonymous
()

Поддержу первые два комментария от анонимус{а,ов}.

mord0d ★★★★★
()
Последнее исправление: mord0d (всего исправлений: 1)
Ответ на: комментарий от anonymous

Клавиатура на QMK. Если денег нет или есть другие уважительные причины искать программных решений — evdev/uinput

Да

это работает на уровне ядра

блин =) нет =)

t184256 ★★★★★
()
Ответ на: комментарий от t184256

блин =) нет =)

Ну обработчик в юзерспейсе, но он же всё равно прицеплен к символьному устройству. Не суть важно, главное что работает независимо от иксов, тулкитов и прочего хлама.

anonymous
()
Ответ на: комментарий от t184256
>>> evdev.list_devices()
[]
>>> 
ilya@debian:~$ pip3 install uinput
Collecting uinput
Exception:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/usr/lib/python3/dist-packages/pip/commands/install.py", line 353, in run
    wb.build(autobuilding=True)
  File "/usr/lib/python3/dist-packages/pip/wheel.py", line 749, in build
    self.requirement_set.prepare_files(self.finder)
  File "/usr/lib/python3/dist-packages/pip/req/req_set.py", line 380, in prepare_files
    ignore_dependencies=self.ignore_dependencies))
  File "/usr/lib/python3/dist-packages/pip/req/req_set.py", line 554, in _prepare_file
    require_hashes
  File "/usr/lib/python3/dist-packages/pip/req/req_install.py", line 278, in populate_link
    self.link = finder.find_requirement(self, upgrade)
  File "/usr/lib/python3/dist-packages/pip/index.py", line 465, in find_requirement
    all_candidates = self.find_all_candidates(req.name)
  File "/usr/lib/python3/dist-packages/pip/index.py", line 423, in find_all_candidates
    for page in self._get_pages(url_locations, project_name):
  File "/usr/lib/python3/dist-packages/pip/index.py", line 568, in _get_pages
    page = self._get_page(location)
  File "/usr/lib/python3/dist-packages/pip/index.py", line 683, in _get_page
    return HTMLPage.get_page(link, session=self.session)
  File "/usr/lib/python3/dist-packages/pip/index.py", line 795, in get_page
    resp.raise_for_status()
  File "/usr/share/python-wheels/requests-2.12.4-py2.py3-none-any.whl/requests/models.py", line 893, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://pypi.org/simple/uinput/
ilya@debian:~$
GuruOfTheWeb
() автор топика
Ответ на: комментарий от GuruOfTheWeb

Хм, а что, в твоём дистре нет пакета python3-uinput?

Ну ладно, тогда, возможно, стоит немного переписать и заюзать evdev.uinput.

t184256 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.