Diff

Differences From Artifact [05bb157866]:

To Artifact [9cb98c514a]:


2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2014
2015
2016
2017
2018
2019
2020























2021
2022
2023
2024
2025
2026
2027







-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-







       }
#endif

	if (wParam == VK_MENU && (HIWORD(lParam)&KF_EXTENDED)) {
	    keystate[VK_RMENU] = keystate[VK_MENU];
	}

	/* Note if AltGr was pressed and if it was used as a compose key */
	if (cfg.compose_key) {
	    if (wParam == VK_MENU && (HIWORD(lParam)&KF_EXTENDED))
	    {
		if (!compose_state) compose_key = wParam;
	    }
	    if (wParam == VK_APPS && !compose_state)
		compose_key = wParam;

	    if (wParam == compose_key)
	    {
		if (compose_state == 0 && (HIWORD(lParam)&(KF_UP|KF_REPEAT))==0)
		    compose_state = 1;
		else if (compose_state == 1 && (HIWORD(lParam)&KF_UP))
		    compose_state = 2;
		else
		    compose_state = 0;
	    }
	    else if (compose_state==1 && wParam != VK_CONTROL)
		compose_state = 0;
	} else {
	    compose_state = 0;
	}

	/* Nastyness with NUMLock - Shift-NUMLock is left alone though */
	if ( (cfg.funky_type == 3 ||
              (cfg.funky_type <= 1 && app_keypad_keys && !cfg.no_applic_k))
	      && wParam==VK_NUMLOCK && !(keystate[VK_SHIFT]&0x80)) {

	    wParam = VK_EXECUTE;
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073










2074
2075
2076























2077
2078
2079
2080
2081
2082
2083
2040
2041
2042
2043
2044
2045
2046




2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089







-
-
-
-
+
+
+
+
+
+
+
+
+
+



+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







       return 0;

    if ((HIWORD(lParam)&KF_ALTDOWN) && (keystate[VK_RMENU]&0x80) == 0)
	left_alt = 1;

    key_down = ((HIWORD(lParam)&KF_UP)==0);

    /* Make sure Ctrl-ALT is not the same as AltGr for ToAscii */
    if (left_alt && (keystate[VK_CONTROL]&0x80))
	keystate[VK_MENU] = 0;

    /* Make sure Ctrl-ALT is not the same as AltGr for ToAscii unless told. */
    if (left_alt && (keystate[VK_CONTROL]&0x80)) {
	if (cfg.ctrlaltkeys)
	    keystate[VK_MENU] = 0;
	else {
	    keystate[VK_RMENU] = 0x80;
	    left_alt = 0;
	}
    }

    scan = (HIWORD(lParam) & (KF_UP | KF_EXTENDED | 0xFF));
    shift_state = ((keystate[VK_SHIFT]&0x80)!=0)
                + ((keystate[VK_CONTROL]&0x80)!=0)*2;

    /* Note if AltGr was pressed and if it was used as a compose key */
    if (!compose_state) {
	compose_key = -1;
	if (cfg.compose_key) {
	    if (wParam == VK_MENU && (HIWORD(lParam)&KF_EXTENDED))
		compose_key = wParam;
	}
	if (wParam == VK_APPS)
	    compose_key = wParam;
    }

    if (wParam == compose_key)
    {
	if (compose_state == 0 && (HIWORD(lParam)&(KF_UP|KF_REPEAT))==0)
	    compose_state = 1;
	else if (compose_state == 1 && (HIWORD(lParam)&KF_UP))
	    compose_state = 2;
	else
	    compose_state = 0;
    }
    else if (compose_state==1 && wParam != VK_CONTROL)
	compose_state = 0;

    /* 
     * Record that we pressed key so the scroll window can be reset, but
     * be careful to avoid Shift-UP/Down
     */
    if( wParam != VK_SHIFT && wParam != VK_PRIOR && wParam != VK_NEXT ) {
        seen_key_event = 1; 
2240
2241
2242
2243
2244
2245
2246




2247
2248
2249
2250
2251
2252
2253
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263







+
+
+
+







	if (wParam == VK_SPACE && shift_state == 3 )	/* Ctrl-Shift-Space */
	{
	    *p++ = 160; return p - output;
	}
	if (wParam == VK_CANCEL && shift_state == 2 )	/* Ctrl-Break */
	{
	    *p++ = 3; return p - output;
	}
	if (wParam == VK_PAUSE)				/* Break/Pause */
	{
	    *p++ = 26; *p++ = 0; return -2;
	}
	/* Control-2 to Control-8 are special */
	if (shift_state == 2 && wParam >= '2' && wParam <= '8')
	{
	    *p++ = "\000\033\034\035\036\037\177"[wParam-'2'];
	    return p - output;
	}
2424
2425
2426
2427
2428
2429
2430

2431
2432
2433
2434
2435
2436
2437
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448







+







            else if (message == WM_SYSKEYUP && alt_state)
                PostMessage(hwnd, WM_CHAR, ' ', 0);
            if (message == WM_SYSKEYUP)
                alt_state = 0;
        } else
	    return 0;
    }
    else alt_state = 0;

    return -1;
}

void set_title (char *title) {
    sfree (window_name);
    window_name = smalloc(1+strlen(title));