zweite Tastatur zum Ausführen von Befehlen

zweite Tastatur zum Ausführen von Befehlen

An meinem Computer sind zwei USB-Tastaturen angeschlossen. Kann man, anstatt beide einfach dieselbe Taste drücken zu lassen, eine zweite Tastatur so einrichten, dass sie Befehle ausführt, anstatt Buchstaben einzugeben? Und wenn das nicht möglich ist, kann man sie dann so einrichten, dass sie zumindest in einer anderen Sprache wie zum Beispiel Russisch tippt?

Antwort1

Dies ist meine dritte Antwort, bei der ich eine Empfehlung aussprechen kann actkbd... :)

Wenn Sie also alle Tasten der zweiten Tastatur zum Ausführen von Befehlen und nicht zum Eingeben von Buchstaben konfigurieren möchten, können Sie actkbd... :) verwenden.

Nach der Installation actkbdmüssen wir herausfinden, welche Gerätedatei zum Empfangen von Ereignissen von unserer Tastatur verwendet wird:

pbm@tauri ~ $ cat /proc/bus/input/devices 
[cut]
I: Bus=0003 Vendor=046d Product=c31c Version=0110
N: Name="Logitech USB Keyboard"
P: Phys=usb-0000:00:1a.0-1.1/input0
S: Sysfs=/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.1/1-1.1:1.0/input/input7
U: Uniq=
H: Handlers=sysrq kbd event5 
B: PROP=0
B: EV=120013
B: KEY=1000000000007 ff9f207ac14057ff febeffdfffefffff fffffffffffffffe
B: MSC=10
B: LED=1f

I: Bus=0003 Vendor=046d Product=c31c Version=0110
N: Name="Logitech USB Keyboard"
P: Phys=usb-0000:00:1a.0-1.1/input1
S: Sysfs=/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.1/1-1.1:1.1/input/input8
U: Uniq=
H: Handlers=kbd event6 
B: PROP=0
B: EV=1b
B: KEY=2010000 397ad801d001 1e000000000000 0
B: ABS=100000000
B: MSC=10
[cut]

In dieser Liste sollten Sie Ihre Tastatur finden und deren Handler überprüfen. Verwenden Sie diese Option, sudo actkbd -s -d /dev/input/HANDLER_NAMEum zu überprüfen, ob dieser Handler Ereignisse sendet. Wenn Sie diesen Befehl ausführen und eine Taste auf der Tastatur drücken (suchen Sie nach Tasten, die Sie an Befehle binden möchten), sollten Sie etwa Folgendes erhalten:

pbm@tauri ~ $ sudo actkbd -s -d /dev/input/event5 
Keys: 57
Keys: 35

Wenn Sie Schlüsselcodes haben, könnten wir actkbdeine Konfigurationsdatei erstellen:

pbm@tauri ~ $ sudo nano /etc/actkbd.conf 
30:::sudo -u pbm DISPLAY=:0 amarok
//30 is keycode for letter a

Wenn Sie die Datei speichern, sollten wir testen, ob die Konfiguration funktioniert:

pbm@tauri ~ $ sudo actkbd -d /dev/input/event5 -D

Wenn Sie die Taste drücken, die Sie in Ihrer Konfigurationsdatei haben, wird der Befehl aus der letzten Spalte der Konfigurationsdatei gestartet.

Ich glaube, es gibt eine Möglichkeit, das Senden von Schlüsseln an Anwendungen zu deaktivieren, aber ich konnte sie nicht finden - schauen Sie nachREADME-Datei.

Anstatt zu versuchen, es zu deaktivieren, actkbdkönnten Sie Ihre Tastatur in X ausschalten.

pbm@tauri ~ $ xinput list
[cut]
    ↳ Logitech USB Keyboard                     id=12   [slave  keyboard (3)]
    ↳ Logitech USB Keyboard                     id=11   [slave  keyboard (3)]
pbm@tauri ~ $ xinput set-prop 11 "Device Enabled" 0
pbm@tauri ~ $ xinput set-prop 12 "Device Enabled" 0

Es sollte funktionieren... :) Weitere Informationen finden actkbdSie unterdiese Antwort.

Mithilfe actkbd(und wahrscheinlich einiger Skripte) können Sie Ihre Tastatur auch so konfigurieren, dass sie vom Befehlsmodus in den Eingabemodus mit russischen Buchstaben wechselt. Lesen Sie dazu Ulrich Schwarz'sdie Antwort.

Antwort2

tut mir leid, dass ich diesen Thread wieder hochhole, aber nur damit Sie wissen, dass es eine Alternative zu actkbd gibt, die in Python geschrieben isthttps://github.com/robinuniverse/Keebiedie dasselbe tun, meiner Meinung nach aber fortgeschrittener sind, etwas einfacher zu verwenden sind und mehr als eine Makrotastatur unterstützen.

Sie können hier meine Konfiguration sehen, um sich einen Eindruck zu verschaffen:https://github.com/mirsella/dotfiles/tree/master/.config/keebie keebiecloseprocess ist nicht im Projekt enthalten, ich habe es geschrieben.

Antwort3

Ich habe ein kleines Programm in C geschrieben, das genau das kann. Ich habe es 'on the fly' geschrieben, also ist es nicht sehr gut, aber es funktioniert. Sie können es bekommenHier.

Antwort4

Das hat bei mir funktioniert:

#!/bin/bash

# 15 is the id of the floating (ie disabled) usb keyboard
#    xinput --float 15

xinput --test 15 \
| grep --line-buffered "key press"| while read line; do
    echo "$line"
    if [ "$line" = "key press   38" ]; then
        echo "yay"
        # do something when 'a' is pressed
    fi

verwandte Informationen