Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
6b84a8e9bc | ||
|
3212962a5b | ||
|
9e9cb883e7 |
@ -4,7 +4,7 @@
|
|||||||
# the entrys are seperated with :===: in words colon tripple equal colon ( to not collide with substitutions)
|
# the entrys are seperated with :===: in words colon tripple equal colon ( to not collide with substitutions)
|
||||||
[levelDict]
|
[levelDict]
|
||||||
none:===:
|
none:===:
|
||||||
some:===:-$~+*-/\@#
|
some:===:-$~+*-/\@#_
|
||||||
most:===:.,:-$~+*-/\@!#%^&*()[]}{<>;
|
most:===:.,:-$~+*-/\@!#%^&*()[]}{<>;
|
||||||
all:===:!"#$%& \'()*+,-./:;<=>?@[\\]^_`{|}~
|
all:===:!"#$%& \'()*+,-./:;<=>?@[\\]^_`{|}~
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
# the entrys are seperated with :===: in words colon tripple equal colon ( to not collide with substitutions)
|
# the entrys are seperated with :===: in words colon tripple equal colon ( to not collide with substitutions)
|
||||||
[levelDict]
|
[levelDict]
|
||||||
none:===:
|
none:===:
|
||||||
some:===:-$~+*-/\@
|
some:===:-$~+*-/\@_
|
||||||
most:===:.,:-$~+*-/\@!#%^&*()[]}{<>;
|
most:===:.,:-$~+*-/\@!#%^&*()[]}{<>;
|
||||||
all:===:!"#$%& \'()*+,-./:;<=>?@[\\]^_`{|}~
|
all:===:!"#$%& \'()*+,-./:;<=>?@[\\]^_`{|}~
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
# the entrys are seperated with :===: in words colon tripple equal colon ( to not collide with substitutions)
|
# the entrys are seperated with :===: in words colon tripple equal colon ( to not collide with substitutions)
|
||||||
[levelDict]
|
[levelDict]
|
||||||
none:===:
|
none:===:
|
||||||
some:===:-$~+*-/\@
|
some:===:-$~+*-/\@_
|
||||||
most:===:.,:-$~+*-/\@!#%^&*()[]}{<>;
|
most:===:.,:-$~+*-/\@!#%^&*()[]}{<>;
|
||||||
all:===:!"#$%& \'()*+,-./:;<=>?@[\\]^_`{|}~
|
all:===:!"#$%& \'()*+,-./:;<=>?@[\\]^_`{|}~
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ theme=default
|
|||||||
|
|
||||||
# Sound volume controls how loud the sounds for your selected soundpack are.
|
# Sound volume controls how loud the sounds for your selected soundpack are.
|
||||||
# 0 is quietest, 1.0 is loudest.
|
# 0 is quietest, 1.0 is loudest.
|
||||||
volume=1.0
|
volume=0.7
|
||||||
|
|
||||||
# shell commands for generic sound driver
|
# shell commands for generic sound driver
|
||||||
# the folowing variable are substituted
|
# the folowing variable are substituted
|
||||||
@ -92,8 +92,8 @@ fenrirMaxRate=450
|
|||||||
driver=vcsaDriver
|
driver=vcsaDriver
|
||||||
encoding=auto
|
encoding=auto
|
||||||
screenUpdateDelay=0.05
|
screenUpdateDelay=0.05
|
||||||
suspendingScreen=
|
ignoreScreen=
|
||||||
autodetectSuspendingScreen=True
|
autodetectIgnoreScreen=True
|
||||||
|
|
||||||
[keyboard]
|
[keyboard]
|
||||||
driver=evdevDriver
|
driver=evdevDriver
|
||||||
@ -131,7 +131,7 @@ punctuationProfile=default
|
|||||||
punctuationLevel=some
|
punctuationLevel=some
|
||||||
respectPunctuationPause=True
|
respectPunctuationPause=True
|
||||||
newLinePause=True
|
newLinePause=True
|
||||||
numberOfClipboards=10
|
numberOfClipboards=50
|
||||||
# used path for "export_clipboard_to_file"
|
# used path for "export_clipboard_to_file"
|
||||||
# $user is replaced by username
|
# $user is replaced by username
|
||||||
#clipboardExportPath=/home/$user/fenrirClipboard
|
#clipboardExportPath=/home/$user/fenrirClipboard
|
||||||
@ -190,7 +190,7 @@ enableSettingsRemote=True
|
|||||||
enableCommandRemote=True
|
enableCommandRemote=True
|
||||||
|
|
||||||
[barrier]
|
[barrier]
|
||||||
enabled=True
|
enabled=False
|
||||||
leftBarriers=│└┌─
|
leftBarriers=│└┌─
|
||||||
rightBarriers=│┘┐─
|
rightBarriers=│┘┐─
|
||||||
|
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
evdev>=1.1.2
|
daemonize
|
||||||
daemonize>=2.5.0
|
evdev
|
||||||
dbus-python>=1.2.8
|
|
||||||
pyudev>=0.21.0
|
|
||||||
pexpect
|
pexpect
|
||||||
|
pyenchant
|
||||||
pyperclip
|
pyperclip
|
||||||
pyte>=0.7.0
|
pyte
|
||||||
|
pyudev
|
||||||
|
pyxdg
|
||||||
setproctitle
|
setproctitle
|
||||||
|
@ -176,7 +176,7 @@ class commandManager():
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
def executeSwitchTrigger(self, trigger, unLoadScript, loadScript):
|
def executeSwitchTrigger(self, trigger, unLoadScript, loadScript):
|
||||||
if self.env['runtime']['screenManager'].isSuspendingScreen():
|
if self.env['runtime']['screenManager'].isIgnoredScreen():
|
||||||
return
|
return
|
||||||
#unload
|
#unload
|
||||||
oldScript = unLoadScript
|
oldScript = unLoadScript
|
||||||
@ -199,7 +199,7 @@ class commandManager():
|
|||||||
|
|
||||||
def executeDefaultTrigger(self, trigger, force=False):
|
def executeDefaultTrigger(self, trigger, force=False):
|
||||||
if not force:
|
if not force:
|
||||||
if self.env['runtime']['screenManager'].isSuspendingScreen():
|
if self.env['runtime']['screenManager'].isIgnoredScreen():
|
||||||
return
|
return
|
||||||
for command in sorted(self.env['commands'][trigger]):
|
for command in sorted(self.env['commands'][trigger]):
|
||||||
if self.commandExists(command, trigger):
|
if self.commandExists(command, trigger):
|
||||||
@ -214,7 +214,7 @@ class commandManager():
|
|||||||
self.env['runtime']['debug'].writeDebugOut("Executing trigger:" + trigger + "." + command + str(e) ,debug.debugLevel.ERROR)
|
self.env['runtime']['debug'].writeDebugOut("Executing trigger:" + trigger + "." + command + str(e) ,debug.debugLevel.ERROR)
|
||||||
|
|
||||||
def executeCommand(self, command, section = 'commands'):
|
def executeCommand(self, command, section = 'commands'):
|
||||||
if self.env['runtime']['screenManager'].isSuspendingScreen():
|
if self.env['runtime']['screenManager'].isIgnoredScreen():
|
||||||
return
|
return
|
||||||
if self.commandExists(command, section):
|
if self.commandExists(command, section):
|
||||||
try:
|
try:
|
||||||
|
@ -52,12 +52,15 @@ class debugManager():
|
|||||||
else:
|
else:
|
||||||
if not self._fileOpened and fileMode:
|
if not self._fileOpened and fileMode:
|
||||||
self.openDebugFile()
|
self.openDebugFile()
|
||||||
|
timestamp = str(datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S.%f'))
|
||||||
if onAnyLevel:
|
if onAnyLevel:
|
||||||
msg = 'ANY '+ str(level) + ' ' + str(datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S.%f'))
|
levelInfo = 'INFO ANY'
|
||||||
else:
|
else:
|
||||||
msg = str(level) +' ' + str(datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S.%f')
|
levelInfo = str(level)
|
||||||
)
|
|
||||||
msg += ': ' + text
|
# Changed order: text comes first, then level and timestamp
|
||||||
|
msg = text + ' - ' + levelInfo + ' ' + timestamp
|
||||||
|
|
||||||
if printMode:
|
if printMode:
|
||||||
print(msg)
|
print(msg)
|
||||||
if fileMode:
|
if fileMode:
|
||||||
|
@ -55,7 +55,7 @@ class fenrirManager():
|
|||||||
if self.environment['runtime']['inputManager'].noKeyPressed():
|
if self.environment['runtime']['inputManager'].noKeyPressed():
|
||||||
self.environment['runtime']['inputManager'].clearLastDeepInput()
|
self.environment['runtime']['inputManager'].clearLastDeepInput()
|
||||||
|
|
||||||
if self.environment['runtime']['screenManager'].isSuspendingScreen():
|
if self.environment['runtime']['screenManager'].isIgnoredScreen():
|
||||||
self.environment['runtime']['inputManager'].writeEventBuffer()
|
self.environment['runtime']['inputManager'].writeEventBuffer()
|
||||||
else:
|
else:
|
||||||
if self.environment['runtime']['helpManager'].isTutorialMode():
|
if self.environment['runtime']['helpManager'].isTutorialMode():
|
||||||
|
@ -59,7 +59,7 @@ class screenManager():
|
|||||||
if self.isCurrScreenIgnoredChanged():
|
if self.isCurrScreenIgnoredChanged():
|
||||||
self.env['runtime']['inputManager'].setExecuteDeviceGrab()
|
self.env['runtime']['inputManager'].setExecuteDeviceGrab()
|
||||||
self.env['runtime']['inputManager'].handleDeviceGrab()
|
self.env['runtime']['inputManager'].handleDeviceGrab()
|
||||||
if not self.isSuspendingScreen(self.env['screen']['newTTY']):
|
if not self.isIgnoredScreen(self.env['screen']['newTTY']):
|
||||||
self.update(eventData, 'onScreenChange')
|
self.update(eventData, 'onScreenChange')
|
||||||
self.env['screen']['lastScreenUpdate'] = time.time()
|
self.env['screen']['lastScreenUpdate'] = time.time()
|
||||||
else:
|
else:
|
||||||
@ -81,7 +81,7 @@ class screenManager():
|
|||||||
return self.prevScreenIgnored
|
return self.prevScreenIgnored
|
||||||
def updateScreenIgnored(self):
|
def updateScreenIgnored(self):
|
||||||
self.prevScreenIgnored = self.currScreenIgnored
|
self.prevScreenIgnored = self.currScreenIgnored
|
||||||
self.currScreenIgnored = self.isSuspendingScreen(self.env['screen']['newTTY'])
|
self.currScreenIgnored = self.isIgnoredScreen(self.env['screen']['newTTY'])
|
||||||
def update(self, eventData, trigger='onUpdate'):
|
def update(self, eventData, trigger='onUpdate'):
|
||||||
# set new "old" values
|
# set new "old" values
|
||||||
self.env['screen']['oldContentBytes'] = self.env['screen']['newContentBytes']
|
self.env['screen']['oldContentBytes'] = self.env['screen']['newContentBytes']
|
||||||
@ -174,16 +174,16 @@ class screenManager():
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.env['runtime']['debug'].writeDebugOut('screenManager:update:highlight: ' + str(e),debug.debugLevel.ERROR)
|
self.env['runtime']['debug'].writeDebugOut('screenManager:update:highlight: ' + str(e),debug.debugLevel.ERROR)
|
||||||
|
|
||||||
def isSuspendingScreen(self, screen = None):
|
def isIgnoredScreen(self, screen = None):
|
||||||
if screen == None:
|
if screen == None:
|
||||||
screen = self.env['screen']['newTTY']
|
screen = self.env['screen']['newTTY']
|
||||||
ignoreScreens = []
|
ignoreScreens = []
|
||||||
fixIgnoreScreens = self.env['runtime']['settingsManager'].getSetting('screen', 'suspendingScreen')
|
fixIgnoreScreens = self.env['runtime']['settingsManager'].getSetting('screen', 'ignoreScreen')
|
||||||
if fixIgnoreScreens != '':
|
if fixIgnoreScreens != '':
|
||||||
ignoreScreens.extend(fixIgnoreScreens.split(','))
|
ignoreScreens.extend(fixIgnoreScreens.split(','))
|
||||||
if self.env['runtime']['settingsManager'].getSettingAsBool('screen', 'autodetectSuspendingScreen'):
|
if self.env['runtime']['settingsManager'].getSettingAsBool('screen', 'autodetectIgnoreScreen'):
|
||||||
ignoreScreens.extend(self.env['screen']['autoIgnoreScreens'])
|
ignoreScreens.extend(self.env['screen']['autoIgnoreScreens'])
|
||||||
self.env['runtime']['debug'].writeDebugOut('screenManager:isSuspendingScreen ignore:' + str(ignoreScreens) + ' current:'+ str(screen ), debug.debugLevel.INFO)
|
self.env['runtime']['debug'].writeDebugOut('screenManager:isIgnoredScreen ignore:' + str(ignoreScreens) + ' current:'+ str(screen ), debug.debugLevel.INFO)
|
||||||
return (screen in ignoreScreens)
|
return (screen in ignoreScreens)
|
||||||
|
|
||||||
def isScreenChange(self):
|
def isScreenChange(self):
|
||||||
|
@ -40,8 +40,8 @@ settingsData = {
|
|||||||
'driver': 'vcsaDriver',
|
'driver': 'vcsaDriver',
|
||||||
'encoding': 'auto',
|
'encoding': 'auto',
|
||||||
'screenUpdateDelay': 0.1,
|
'screenUpdateDelay': 0.1,
|
||||||
'suspendingScreen': '',
|
'ignoreScreen': '',
|
||||||
'autodetectSuspendingScreen': False,
|
'autodetectIgnoreScreen': False,
|
||||||
},
|
},
|
||||||
'general':{
|
'general':{
|
||||||
'debugLevel': debug.debugLevel.DEACTIVE,
|
'debugLevel': debug.debugLevel.DEACTIVE,
|
||||||
|
@ -4,5 +4,5 @@
|
|||||||
# Fenrir TTY screen reader
|
# Fenrir TTY screen reader
|
||||||
# By Chrys, Storm Dragon, and contributers.
|
# By Chrys, Storm Dragon, and contributers.
|
||||||
|
|
||||||
version = "2025.04.17"
|
version = "2025.04.23"
|
||||||
codeName = "testing"
|
codeName = "testing"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user