[BRLTTY] Inserting control characters under screen driver
Dave Mielke
dave at mielke.cc
Sun Nov 1 21:29:01 EST 2015
Please try the attached patch (screen-1.patch) to see if it resolves this
problem. It's a modification to brltty's screen screen driver.
If it doesn't work then I'd appreciate a debug log with:
-L/path/to/logfile
-ldebug,inpkts
--
Dave Mielke | 2213 Fox Crescent | The Bible is the very Word of God.
Phone: 1-613-726-0014 | Ottawa, Ontario | http://Mielke.cc/bible/
EMail: Dave at Mielke.cc | Canada K2A 1H7 | http://FamilyRadio.org/
-------------- next part --------------
diff --git a/Drivers/Screen/Screen/screen.c b/Drivers/Screen/Screen/screen.c
index 056ac9d..b744357 100644
--- a/Drivers/Screen/Screen/screen.c
+++ b/Drivers/Screen/Screen/screen.c
@@ -41,6 +41,7 @@ static int shmFileDescriptor = -1;
#include "log.h"
#include "hostcmd.h"
#include "charset.h"
+#include "ascii.h"
#include "scr_driver.h"
#include "screen.h"
@@ -206,7 +207,7 @@ static int
insertKey_ScreenScreen (ScreenKey key) {
const unsigned char flags = getAuxiliaryData()[1];
wchar_t character = key & SCR_KEY_CHAR_MASK;
- char buffer[3];
+ char buffer[0X10];
char *sequence;
logMessage(LOG_DEBUG, "insert key: %04X", key);
@@ -264,12 +265,15 @@ insertKey_ScreenScreen (ScreenKey key) {
if (byte == EOF) {
logMessage(LOG_WARNING, "character not supported in local character set: 0X%04X", key);
+ return 0;
}
- sequence = buffer + sizeof(buffer);
- *--sequence = 0;
- *--sequence = byte;
- if (key & SCR_KEY_ALT_LEFT) *--sequence = 0X1B;
+ STR_BEGIN(buffer, sizeof(buffer));
+ if (key & SCR_KEY_ALT_LEFT) STR_PRINTF("%c", ESC);
+ STR_PRINTF("\\%03o", byte);
+ STR_END;
+
+ sequence = buffer;
}
return doScreenCommand("stuff", sequence, NULL);
More information about the BRLTTY
mailing list