Я использую Kali 2022 (Linux) с XFCE 4.16. Я экспериментирую с модулем Python evdev . Я пытаюсь достичь при нажатии определенной клавиши на клавиатуре (например, буква «a»), вместо буквы «a», я хочу опубликовать конкретный символ Unicode на элементе фокусировки. Другие слова, я хочу отобразить key_a с другим символом Unicode, который не является «а».shit+u затем введите шестигранный код Unicode для символа. Но когда я моделирую эти клавиши, используя uinput в Python, моделируемые клавишные клавиши публикуют ненужные символы (например, U0985) в элементе фокуса. Linux по какой -то причине не показывает символ Unicode, представленный им. Какая проблема в моем коде и как он может распечатать фактический Unicode. < /p>
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()
Подробнее здесь: https://stackoverflow.com/questions/797 ... -python-in
Выходной символ Unicode, подавив исходный клавиш с использованием Evdev Python в Linux ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Выходной символ Unicode, подавив исходный клавиш с использованием Evdev Python в Linux
Anonymous » » в форуме Linux - 0 Ответы
- 16 Просмотры
-
Последнее сообщение Anonymous
-