Ausgabe des Unicode-Zeichens durch Unterdrückung der ursprünglichen Tastaturen der physischen Tastatur mit EVDEV-Python Linux

Linux verstehen
Anonymous
 Ausgabe des Unicode-Zeichens durch Unterdrückung der ursprünglichen Tastaturen der physischen Tastatur mit EVDEV-Python

Post by Anonymous »

Ich verwende Kali 2022 (Linux) mit XFCE 4.16. Ich experimentiere mit Python Evdev Modul. Ich versuche zu erreichen, dass ich beim Drücken einer bestimmten Taste auf der Tastatur (wie Buchstaben 'a') anstelle von Buchstaben 'a' ein bestimmtes Unicode -Zeichen für das Fokuselement veröffentlichen möchte. In anderen Wörtern möchte ich KEY_A mit einem anderen Unicode -Charakter, das nicht 'a'.

Code: Select all

shit
+

Code: Select all

u
Geben Sie dann den Unicode-Hex-Code für das Zeichen ein. Wenn ich diese Tastenanschläge mit uIinput in Python simuliere, posten die simulierten Tastenanschläge die individuellen Zeichen (wie u0985) im Fokuselement. Linux zeigt aus irgendeinem Grund den von ihm dargestellten Unicode -Zeichen nicht. Was ist das Problem in meinem Code und wie er den tatsächlichen Unicode drucken kann. < /p>

Code: Select all

import evdev
from evdev import UInput, ecodes as e
import time

# Open the input device (replace with your actual device)
dev = evdev.InputDevice('/dev/input/event2')
dev.grab() # Grab the device to receive all events

# Create a virtual uinput device with capabilities
cap = {e.EV_KEY: [e.KEY_A, e.KEY_B,e.KEY_G,e.KEY_U,e.KEY_0,e.KEY_9,e.KEY_8,e.KEY_5,e.KEY_ENTER]}
ui = UInput(cap, name='my_virtual_keyboard')

for event in dev.read_loop():

if event.type == e.EV_KEY:

key_event = evdev.categorize(event)
if key_event.keystate == evdev.KeyEvent.key_down:

# Simulate pressing Ctrl+Shift+U
ui.write(event.type, e.KEY_LEFTCTRL, 1)
ui.write(event.type, e.KEY_LEFTSHIFT, 1)
ui.write(event.type, e.KEY_U, 1)
ui.write(event.type, e.KEY_U, 0) # Release U
ui.write(event.type, e.KEY_LEFTSHIFT, 0) # Release Shift
ui.write(event.type, e.KEY_LEFTCTRL, 0) # Release Ctrl
ui.syn() # Synchronize events
time.sleep(0.1) # Small delay for the system to register the input mode

# This would involve simulating individual key presses for '0', '9', '8', '5'
# ... (code to simulate these key presses) ...
ui.write(event.type, e.KEY_0, 1)
ui.write(event.type, e.KEY_0, 0)

ui.write(event.type, e.KEY_9, 1)
ui.write(event.type, e.KEY_9, 0)

ui.write(event.type, e.KEY_8, 1)
ui.write(event.type, e.KEY_8, 0)

ui.write(event.type, e.KEY_5, 1)
ui.write(event.type, e.KEY_5, 0)
ui.syn()
time.sleep(0.1) # Small delay for the system to register the input mode

# Simulate pressing Enter to confirm the Unicode input
ui.write(event.type, e.KEY_ENTER, 1)
ui.write(event.type, e.KEY_ENTER, 0)
ui.syn()

elif key_event.keystate == evdev.KeyEvent.key_up:
pass

else:
# Re-inject other event types (e.g., EV_SYN)
ui.write(event.type, event.code, event.value)

#ungrab and close
dev.ungrab()
ui.close()

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post