[BRLTTY] Inserting control characters under screen driver
Dave Mielke
dave at mielke.cc
Mon Nov 2 14:17:55 EST 2015
[quoted lines by Cheryl Homiak on 2015/11/02 at 12:25 -0600]
>This patch patched but didn't solve the problem.
Here's another patch (screen-2.patch) with more logging. Please give it a try.
Remember to remove the earlier patch before applying this one.
--
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..d4a4c22 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,11 +207,12 @@ 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);
+ logMessage(LOG_DEBUG, "insert key (before): %04X", key);
setScreenKeyModifiers(&key, 0);
+ logMessage(LOG_DEBUG, "insert key (after): %04X", key);
if (isSpecialKey(key)) {
#define KEY(key,string) case (key): sequence = (string); break
@@ -264,14 +266,18 @@ 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;
}
+logBytes(LOG_DEBUG, "char sequence", sequence, strlen(sequence));
return doScreenCommand("stuff", sequence, NULL);
}
More information about the BRLTTY
mailing list