Commit 84d6dd0e authored by runge's avatar runge

malloc score_hint and make it shorts to save space.

parent 222ecab5
x11vnc README file Date: Sun Aug 19 14:30:12 EDT 2007 x11vnc README file Date: Sun Aug 19 15:46:48 EDT 2007
The following information is taken from these URLs: The following information is taken from these URLs:
...@@ -13101,7 +13101,7 @@ t ...@@ -13101,7 +13101,7 @@ t
They apply only when there is ambiguity as to which They apply only when there is ambiguity as to which
key to choose (i.e the mapping is not one-to-one). key to choose (i.e the mapping is not one-to-one).
NOKEYHINTS=1: for up ascii keystrokes do not use score NOKEYHINTS=1: for up ascii keystrokes do not use score
hints saved when the keep was press down. NOANYDOWN=1: hints saved when the key was pressed down. NOANYDOWN=1:
for up keystrokes do not resort to searching through for up keystrokes do not resort to searching through
keys that are currently pressed down. KEYSDOWN=N: keys that are currently pressed down. KEYSDOWN=N:
remember the last N keys press down for tie-breaking remember the last N keys press down for tie-breaking
......
...@@ -1943,7 +1943,7 @@ void print_help(int mode) { ...@@ -1943,7 +1943,7 @@ void print_help(int mode) {
" They apply only when there is ambiguity as to which\n" " They apply only when there is ambiguity as to which\n"
" key to choose (i.e the mapping is not one-to-one).\n" " key to choose (i.e the mapping is not one-to-one).\n"
" NOKEYHINTS=1: for up ascii keystrokes do not use score\n" " NOKEYHINTS=1: for up ascii keystrokes do not use score\n"
" hints saved when the keep was press down. NOANYDOWN=1:\n" " hints saved when the key was pressed down. NOANYDOWN=1:\n"
" for up keystrokes do not resort to searching through\n" " for up keystrokes do not resort to searching through\n"
" keys that are currently pressed down. KEYSDOWN=N:\n" " keys that are currently pressed down. KEYSDOWN=N:\n"
" remember the last N keys press down for tie-breaking\n" " remember the last N keys press down for tie-breaking\n"
......
...@@ -1466,7 +1466,7 @@ xkbmodifiers[] For the KeySym bound to this (keycode,group,level) store ...@@ -1466,7 +1466,7 @@ xkbmodifiers[] For the KeySym bound to this (keycode,group,level) store
} }
} }
static int score_hint[0x100][0x100]; static short **score_hint = NULL;
/* /*
* Called on user keyboard input. Try to solve the reverse mapping * Called on user keyboard input. Try to solve the reverse mapping
* problem: KeySym (from VNC client) => KeyCode(s) to press to generate * problem: KeySym (from VNC client) => KeyCode(s) to press to generate
...@@ -1516,9 +1516,16 @@ static void xkb_tweak_keyboard(rfbBool down, rfbKeySym keysym, ...@@ -1516,9 +1516,16 @@ static void xkb_tweak_keyboard(rfbBool down, rfbKeySym keysym,
} else { } else {
klast = 3; klast = 3;
} }
for (i=0; i<0x100; i++) { if (khints && score_hint == NULL) {
for (j=0; j<0x100; j++) { score_hint = (short **) malloc(0x100 * sizeof(short *));
score_hint[i][j] = -1; for (i=0; i<0x100; i++) {
score_hint[i] = (short *) malloc(0x100 * sizeof(short));
}
for (i=0; i<0x100; i++) {
for (j=0; j<0x100; j++) {
score_hint[i][j] = -1;
}
} }
} }
} }
...@@ -1714,7 +1721,7 @@ static void xkb_tweak_keyboard(rfbBool down, rfbKeySym keysym, ...@@ -1714,7 +1721,7 @@ static void xkb_tweak_keyboard(rfbBool down, rfbKeySym keysym,
kc_f[l], myscore); kc_f[l], myscore);
} }
if (khints && keysym < 0x100 && kc_f[l] < 0x100) { if (khints && keysym < 0x100 && kc_f[l] < 0x100) {
score_hint[(int) keysym][kc_f[l]] = score[l]; score_hint[(int) keysym][kc_f[l]] = (short) score[l];
} }
} }
for (l=0; l < found; l++) { for (l=0; l < found; l++) {
...@@ -1738,7 +1745,8 @@ static void xkb_tweak_keyboard(rfbBool down, rfbKeySym keysym, ...@@ -1738,7 +1745,8 @@ static void xkb_tweak_keyboard(rfbBool down, rfbKeySym keysym,
if (khints && keysym < 0x100) { if (khints && keysym < 0x100) {
/* low keysyms, ascii, only */ /* low keysyms, ascii, only */
int ks = (int) keysym; int ks = (int) keysym;
int ok = 1, sbest = -1, lbest, l; int ok = 1, lbest, l;
short sbest = -1;
for (l=0; l < found; l++) { for (l=0; l < found; l++) {
if (kc_f[l] < 0x100) { if (kc_f[l] < 0x100) {
int key = (int) kc_f[l]; int key = (int) kc_f[l];
...@@ -1812,7 +1820,6 @@ static void xkb_tweak_keyboard(rfbBool down, rfbKeySym keysym, ...@@ -1812,7 +1820,6 @@ static void xkb_tweak_keyboard(rfbBool down, rfbKeySym keysym,
* physical display (but is updated * physical display (but is updated
* periodically to clean out stale info). * periodically to clean out stale info).
*/ */
/* we could probably break ties based on lowest XKeycodeToKeysym index */
for (l=0; l < found; l++) { for (l=0; l < found; l++) {
int key = (int) kc_f[l]; int key = (int) kc_f[l];
int j, jmatch = -1; int j, jmatch = -1;
...@@ -1820,6 +1827,7 @@ static void xkb_tweak_keyboard(rfbBool down, rfbKeySym keysym, ...@@ -1820,6 +1827,7 @@ static void xkb_tweak_keyboard(rfbBool down, rfbKeySym keysym,
if (keycode_state[key]) { if (keycode_state[key]) {
continue; continue;
} }
/* break ties based on lowest XKeycodeToKeysym index */
for (j=0; j<8; j++) { for (j=0; j<8; j++) {
KeySym ks = XKeycodeToKeysym(dpy, kc_f[l], j); KeySym ks = XKeycodeToKeysym(dpy, kc_f[l], j);
if (ks != NoSymbol && ks == keysym) { if (ks != NoSymbol && ks == keysym) {
......
...@@ -2245,7 +2245,7 @@ When \fB-xkb\fR mode is active you can set these env. vars. ...@@ -2245,7 +2245,7 @@ When \fB-xkb\fR mode is active you can set these env. vars.
They apply only when there is ambiguity as to which They apply only when there is ambiguity as to which
key to choose (i.e the mapping is not one-to-one). key to choose (i.e the mapping is not one-to-one).
NOKEYHINTS=1: for up ascii keystrokes do not use score NOKEYHINTS=1: for up ascii keystrokes do not use score
hints saved when the keep was press down. NOANYDOWN=1: hints saved when the key was pressed down. NOANYDOWN=1:
for up keystrokes do not resort to searching through for up keystrokes do not resort to searching through
keys that are currently pressed down. KEYSDOWN=N: keys that are currently pressed down. KEYSDOWN=N:
remember the last N keys press down for tie-breaking remember the last N keys press down for tie-breaking
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment