キーボードのキーの一部がなくなったため、破損しているキーを2回押すと、まだ機能している他のキーをプログラムしようとしています。それは可能ですか?それを行うのに役立つプログラムはありますか?
キーを再マップしたい J 2回押すと「m」が表示されます。
NB:私のラップトップはMacBook Pro 13 "Unibody Mid 2012です
を除き、ウェイランドを使用している場合(Ubuntu 17.10、Ubuntu Budgie 18.04でテスト済みですが、Ubuntu Gnome 18.04でも問題ありません)、以下のスニペットが役立ちます。
ボックスが表示されます
「エイリアス」(例:mのjj)を入力すると、結果に(m)が表示され、テキストがすぐにカーソル位置に挿入されます(または、必要に応じてタップした後) Ctrl)。
このスクリプトは、文字、文字列、または完全な行のエイリアスを設定するための単一のソリューションを提供し、行に「エイリアス」を設定するだけです。
replacements = [
["jj", "m"],
["aa", "q"],
["zz", "e"],
["mb", "monkey eats banana"],
]
後者の場合、「mb」と入力すると「monkey eats banana」が貼り付けられます。
いくつかの依存関係を満たす必要があります。
pyautogui:
pip3 install pyautogui
pyperclip:
Sudo apt install python3-pyperclip xsel xclip
python3-xlib
Sudo apt install python3-xlib
ログアウトして再度ログインします。
以下のスクリプトを空のファイルにコピーし、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')
セクションでエイリアスを設定します(インデントを保持してください!):
replacements = [
["jj", "m"],
["aa", "q"],
["zz", "e"],
["mb", "monkey eats banana"],
]
必要に応じて、変更します
act_on_firstmatch = False
に
act_on_firstmatch = True
タップせずにすぐに挿入したい場合 Ctrl
ショートカットキーを設定するwith Ctrl 修飾子として。使った Ctrl + J 私のテストでは、コマンドでスクリプトを実行します:
python3 /path/to/replace_keys.py
これで完了です!
キーの磨耗/破損の問題があるマシンが2台あります。私は2つの解決策を見つけました:
WiFi USBキーボードに10ドルを費やしてください(Logitechには良いキーボードがあります)。通常、BIOSはそれを認識し、OSの前に取得します。
リモートコントロールソフトウェアをロードします(RealVNCは小規模なセットアップには無料で、異なるOSを横断します)
どちらも、必要なアクセスに応じて機能します。
@jacobvlijmの答えはより具体的ですが、別の選択肢は AutoKey のようなプログラムを使用することです。トリガーフレーズとホットキーの押下からキーボードとマウスの入力を生成することにより、デスクトップを自動化する多くのことを行います。
特に、壊れたキーのそれぞれにフレーズを定義し、実際のタイピングでは発生しそうにない動作中のキー押下の任意の組み合わせであるトリガーフレーズによってトリガーさせることができます。これらのフレーズは、Word内からすぐにトリガーするように設定できます。
トリガー文字がそのまま必要な場合にすぐにバックスペースキーを押すと、入力したばかりのトリガーテキストを戻すオプションもあります。
これらはすべて、実際のコーディングを必要とせずに、AutoKey GUIインターフェースを使用して構成できます。
より複雑な要件の場合、AutoKeyは、ユーザーの想像力とPythonの知識によってのみ制限されるフレーズまたはホットキーによってトリガーされる完全なPythonスクリプトを実行できます。