Files
fenrir/src/fenrirscreenreader/core/inputDriver.py

81 lines
2.5 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Fenrir TTY screen reader
# By Chrys, Storm Dragon, and contributers.
from fenrirscreenreader.core import debug
class inputDriver():
def __init__(self):
self._initialized = False
def initialize(self, environment):
self.env = environment
self.env['runtime']['inputManager'].setShortcutType('KEY')
self._isInitialized = True
def shutdown(self):
if self._initialized:
self.removeAllDevices()
self._isInitialized = False
def getInputEvent(self):
time.sleep(0.1)
return None
def clearEventBuffer(self):
if not self._initialized:
return
del self.env['input']['eventBuffer'][:]
def updateInputDevices(self, newDevices = None, init = False):
if not self._initialized:
return
def getLedState(self, led = 0):
if not self._initialized:
return False
return False
def toggleLedState(self, led = 0):
if not self._initialized:
return
def grabAllDevices(self):
if not self._initialized:
return True
return True
def ungrabAllDevices(self):
if not self._initialized:
return True
return True
def forceUngrab(self):
"""Emergency method to release grabbed devices in case of failure"""
if not self._initialized:
return True
try:
# Try standard ungrab first
return self.ungrabAllDevices()
except Exception as e:
# Just log the failure and inform the user
if hasattr(self, 'env') and 'runtime' in self.env and 'debug' in self.env['runtime']:
self.env['runtime']['debug'].writeDebugOut(
f"Emergency device release failed: {str(e)}",
debug.debugLevel.ERROR
)
else:
print(f"Emergency device release failed: {str(e)}")
return False
def hasIDevices(self):
if not self._initialized:
return False
return True
def removeAllDevices(self):
if not self._initialized:
return
def sendKey(self):
if not self._initialized:
return
def __del__(self):
if not self._initialized:
return
try:
self.removeAllDevices()
except Exception as e:
print(f'inputDriver __del__: Error removing devices: {str(e)}')