Как повторно отобразить ключ, когда он нажимается дважды?

Некоторые мои клавиши на клавиатуре пошли, таким образом, я пытаюсь программировать другие ключи, которые все еще работают для нажатия поврежденных клавиш, когда я нажимаю их дважды. Это возможно? Есть ли какая-либо программа, которая может помочь мне в выполнении этого?

Я хочу повторно отобразить ключ J для предоставления 'm', когда я нажимаю его дважды.

NB: Мой ноутбук является MacBook Pro 13-дюймовая Цельная Середина 2012

7
задан 4 September 2018 в 20:14

3 ответа

У меня есть две машины с этой проблемой изношенных / сломанных ключей. Я нашел два решения:

  1. Потратьте десять баксов на клавиатуру WiFi USB (у Logitech неплохое). Как правило, BIOS увидит его и получит его перед ОС.

  2. Загрузка программного обеспечения для пульта дистанционного управления (RealVNC бесплатна для небольших установок и будет работать с разными ОС)

Обе функции работают в зависимости от необходимого доступа.

0
ответ дан 23 November 2019 в 06:39

Набор искажает для символов, строк или полных строк

ЕСЛИ Вы не используете Уэйленд (Ubuntu 17.10, протестированная на Волнистом попугайчике Ubuntu 18.04, но Ubuntu Gnome 18.04 должен быть прекрасным также), отрывок ниже выручит Вас.

Как это работает на практике

  • Нажмите Ctrl + J (или любой другой ярлык, который Вы устанавливаете),
  • Поле появляется

    enter image description here

  • Введите свой "псевдоним" (например, jj для m), шоу результата (m), и текст будет сразу вставлен в позиции курсора (или, если Вы предпочтете после ответвления Ctrl).

Этот сценарий предоставляет единое решение, чтобы установить псевдонимы для символа, строки или даже полных строк, просто установить "псевдоним" в строках:

replacements = [
    ["jj", "m"],
    ["aa", "q"],
    ["zz", "e"],
    ["mb", "monkey eats banana"],
]

В последнем случае, вводя "МБ" вставит "обезьяну, ест банан":

enter image description here

Установка

  1. Необходимо удовлетворить несколько зависимостей:

    • pyautogui:

      pip3 install pyautogui
      
    • pyperclip:

      sudo apt install python3-pyperclip xsel xclip
      
    • python3-xlib

      sudo apt install python3-xlib
      

    Выйдите из системы и въезжайте задним ходом.

  2. Скопируйте сценарий ниже в пустой файл, сохраните его как replace_keys.py

    #!/usr/bin/env python3
    import gi
    gi.require_version("Gtk", "3.0")
    gi.require_version("Wnck", "3.0")
    from gi.repository import Gtk, Gdk, Wnck
    import subprocess
    import pyperclip
    import pyautogui
    import time
    
    
    """
    depends on
    - pyautogui:
      pip3 install pyautogui
    - pyperclip:
      sudo apt install python3-pyperclip xsel xclip
    """
    
    
    act_on_firstmatch = False
    
    
    replacements = [
        ["jj", "m"],
        ["aa", "q"],
        ["zz", "e"],
        ["mb", "monkey eats banana"],
    ]
    
    
    class KeyWin(Gtk.Window):
    
        def __init__(self):
    
            self.screendata = Wnck.Screen.get_default()
            self.screendata.force_update()
            self.curr_subject = self.screendata.get_active_window().get_xid()
            self.currmatch = ""
            Gtk.Window.__init__(self)
            maingrid = Gtk.Grid()
            self.add(maingrid)
            self.set_decorated(False)
            self.set_position(Gtk.WindowPosition.CENTER)
            self.connect("key-release-event", self.check_key)
            self.keyentry = Gtk.Entry()
            self.keyentry.connect("changed", self.update_current)
            self.label = Gtk.Label("")
            self.label.set_width_chars(10)
            maingrid.attach(self.keyentry, 0, 0, 1, 1)
            maingrid.attach(self.label, 1, 0, 1, 1)
            self.show_all()
            self.connect("destroy", Gtk.main_quit)
            Gtk.main()
    
        def update_current(self, widget):
            curr = self.keyentry.get_text()
            self.currmatch = ""
            for s in replacements:
                if curr == s[0]:
                    self.currmatch = s[1]
                    if act_on_firstmatch:
                        self.replace()
            self.label.set_width_chars(len(self.currmatch) + 4)
            self.label.set_text(self.currmatch)
    
    
        def replace(self, *args):
            pyperclip.copy(self.currmatch)
    
            subprocess.call(["wmctrl", "-ia", str(self.curr_subject)])
            Gtk.main_quit()
    
        def check_key(self, button, val):
            typed = Gdk.keyval_name(val.keyval)
            if typed == "Control_L":
                self.replace()
    
    KeyWin()
    time.sleep(0.05)
    pyautogui.hotkey('ctrl', 'v')
    
  3. Настройте свои псевдонимы (СОХРАНИТЕ ДОБАВЛЕНИЕ ОТСТУПА!) в разделе:

    replacements = [
        ["jj", "m"],
        ["aa", "q"],
        ["zz", "e"],
        ["mb", "monkey eats banana"],
    ]
    
  4. Если Вы хотите, изменение

    act_on_firstmatch = False
    

    в

    act_on_firstmatch = True
    

    если Вам нравится вставлять сразу, не касаясь Ctrl

  5. Настройте сочетание клавиш с Ctrl как модификатор. Я использовал Ctrl + J в моем тесте для запущения скрипта командой:

    python3 /path/to/replace_keys.py
    

И Вы сделаны!

6
ответ дан 23 November 2019 в 06:39

Хотя ответ @jacobvlijm более конкретен, другая альтернатива должна использовать программу как AutoKey. Это делает много вещей автоматизировать Ваш рабочий стол путем генерации клавиатуры, и мышь ввела от триггерных фраз и нажатий горячей клавиши.

В частности, можно определить фразу для каждого из поврежденных ключей и инициировать его триггерной фразой, которая является любой комбинацией рабочих нажатий клавиш вряд ли для появления в фактическом вводе. Эти фразы могут быть установлены сразу инициировать из слова.

Существует также опция, которая помещает триггерный текст, который Вы просто ввели назад при непосредственном нажатии клавиши Backspace, если Вам когда-либо нужны триггерные символы, как.

Все это может быть настроено с помощью графического интерфейса AutoKey без фактического требуемого кодирования.

Для более сложных требований AutoKey может запустить полные скрипты Python, инициированные фразами или горячими клавишами, которые только ограничены воображением пользователя и знанием Python.

0
ответ дан 23 November 2019 в 06:39

Другие вопросы по тегам:

Похожие вопросы: