Пример #1
0
void	main(void)
{
	init();

	while(!greenButton)	{}
	while(greenButton)	{}
	switchDelay();
	
	while(1 != 2)
	{
		State	= ((~PORTE) & 0b00000111);
		PORTB	= State;

		switch(State)
		{
			case 1:
				Mode1();
				break;

			case 2:
				Mode2();
				break;

			case 3:
				Mode3();
				break;

			default:
				error();
		}
	}
}
Пример #2
0
void	waitPress(void)
{
	while(1 != 2)
	{
		if(greenButton)
		{
			while(greenButton)	{}
			switchDelay();
			green 	= 1;
			break;
		}

		else if(redButton)
		{
			while(redButton)	{}
			switchDelay();
			green 	= 0;
			break;
		}
	}
}
Пример #3
0
void	Mode3(void)
{
	while(1 != 2)						// infinte loop
	{
		error1 	= 10;
		error2	= 10;
		error3	= 2;
		waitPress();
		Count	= AtoD();
		mainTran	= 1;
		while(!engaged)
		{
			longTimer();
			error1--;
			if(error1 == 0)
			{
				error();
			}
		}
		secTran	 = 1;
		switchDelay();
		mainTran = 0;
		while(Count > 0)
		{
			longTimer(); 				// 1s delay loop
			if(!engaged)
			{
				error3--;
				if(error3 == 0)
				{
					error();
				}
				mainTran	= 1;
				SwitchDelay();
				mainTran	= 0;
			}
			Count--;
		}
		secTran	= 0;
		while(engaged)
		{
			longTimer();
			error2--;
			if(error2 == 0)
			{
				error();
			}
		}
	}
}
Пример #4
0
void ServerConfig::saveSettings()
{
	settings().beginGroup("internalConfig");
	settings().remove("");

	settings().setValue("numColumns", numColumns());
	settings().setValue("numRows", numRows());

	settings().setValue("hasHeartbeat", hasHeartbeat());
	settings().setValue("heartbeat", heartbeat());
	settings().setValue("relativeMouseMoves", relativeMouseMoves());
	settings().setValue("screenSaverSync", screenSaverSync());
	settings().setValue("win32KeepForeground", win32KeepForeground());
	settings().setValue("hasSwitchDelay", hasSwitchDelay());
	settings().setValue("switchDelay", switchDelay());
	settings().setValue("hasSwitchDoubleTap", hasSwitchDoubleTap());
	settings().setValue("switchDoubleTap", switchDoubleTap());
	settings().setValue("switchCornerSize", switchCornerSize());
	settings().setValue("ignoreAutoConnectClient", ignoreAutoConnectClient());

	writeSettings(settings(), switchCorners(), "switchCorner");

	settings().beginWriteArray("screens");
	for (int i = 0; i < screens().size(); i++)
	{
		settings().setArrayIndex(i);
		screens()[i].saveSettings(settings());
	}
	settings().endArray();

	settings().beginWriteArray("hotkeys");
	for (int i = 0; i < hotkeys().size(); i++)
	{
		settings().setArrayIndex(i);
		hotkeys()[i].saveSettings(settings());
	}
	settings().endArray();

	settings().endGroup();
}
Пример #5
0
static int8_t processKeys(const uint8_t* current, uint8_t* processed, uint8_t* report)
{
    int8_t xmit;

    if (!memcmp(current, processed, 8))
        return XMIT_NONE;
    memset(report, 0, 8);
    if (current[1] & MOD_FN) {
        uint8_t modifiers = current[0];
        uint8_t count = 2;
        xmit = XMIT_NORMAL;
        for (int8_t i = 2; i < 8 && xmit == XMIT_NORMAL; ++i) {
            uint8_t code = current[i];
            const uint8_t* a = getKeyFn(code);
            for (int8_t j = 0; j < 3 && count < 8; ++j) {
                uint8_t key = a[j];
                int8_t make = !memchr(processed + 2, code, 6);

                switch (key) {
                case 0:
                    break;
                case KEY_F1:
                    if (make) {
#ifdef WITH_HOS
                        if (current[0] & MOD_SHIFT) {
                            switchProfile(1);
                            modifiers &= ~(MOD_CONTROL | MOD_SHIFT);
                            xmit = XMIT_BRK;
                        }
                        else
#endif
                        {
                            about();
                            xmit = XMIT_MACRO;
                        }
                    }
                    break;
                case KEY_F2:
                    if (make) {
#ifdef WITH_HOS
                        if (current[0] & MOD_SHIFT) {
                            switchProfile(2);
                            modifiers &= ~(MOD_CONTROL | MOD_SHIFT);
                            xmit = XMIT_BRK;
                        }
                        else
#endif
                        {
                            switchOS();
                            xmit = XMIT_MACRO;
                        }
                    }
                    break;
                case KEY_F3:
                    if (make) {
#ifdef WITH_HOS
                        if (current[0] & MOD_SHIFT) {
                            switchProfile(3);
                            modifiers &= ~(MOD_CONTROL | MOD_SHIFT);
                            xmit = XMIT_BRK;
                        }
                        else
#endif
                        {
                            switchBase();
                            xmit = XMIT_MACRO;
                        }
                    }
                    break;
                case KEY_F4:
                    if (make) {
#ifdef WITH_HOS
                        if (current[0] & MOD_SHIFT) {
                            switchProfile(0);
                            modifiers &= ~(MOD_CONTROL | MOD_SHIFT);
                            xmit = XMIT_BRK;
                        }
                        else
#endif
                        {
                            switchKana();
                            xmit = XMIT_MACRO;
                        }
                    }
                    break;
                case KEY_F5:
                    if (make) {
                        switchDelay();
                        xmit = XMIT_MACRO;
                    }
                    break;
                case KEY_F6:
                    if (make) {
                        switchMod();
                        xmit = XMIT_MACRO;
                    }
                    break;
                case KEY_F7:
                    if (make) {
                        switchIME();
                        xmit = XMIT_MACRO;
                    }
                    break;
                case KEY_F8:
                    if (make) {
                        switchLED();
                        xmit = XMIT_MACRO;
                    }
                    break;
                case KEY_F9:
                    if (make) {
                        switchPrefixShift();
                        xmit = XMIT_MACRO;
                    }
                    break;
                case KEY_LEFTCONTROL:
                    modifiers |= MOD_LEFTCONTROL;
                    break;
                case KEY_RIGHTCONTROL:
                    modifiers |= MOD_RIGHTCONTROL;
                    break;
                case KEY_LEFTSHIFT:
                    modifiers |= MOD_LEFTSHIFT;
                    break;
                case KEY_RIGHTSHIFT:
                    modifiers |= MOD_RIGHTSHIFT;
                    break;
#ifdef WITH_HOS
                case KEY_ESCAPE:
                    if (make) {
                        if (!isUSBMode() && (current[0] & MOD_SHIFT)) {
                            HosSetEvent(HOS_TYPE_DEFAULT, HOS_EVENT_CLEAR_BONDING_DATA);
                            modifiers &= ~(MOD_CONTROL | MOD_SHIFT);
                            xmit = XMIT_BRK;
                        } else {
                            key = toggleKanaMode(key, current[0], make);
                            report[count++] = key;
                        }
                    }
                    break;
#endif
                default:
                    key = toggleKanaMode(key, current[0], make);
                    report[count++] = key;
                    break;
                }
            }
        }
#ifdef WITH_HOS
        if (count == 2) {
            modifiers &= ~MOD_SHIFT;
        }
#endif
        report[0] = modifiers;
    } else if (isKanaMode(current))
        xmit = processKeysKana(current, processed, report);
    else
        xmit = processKeysBase(current, processed, report);

#ifdef ENABLE_DUAL_ROLE_FN
    if (isDualRoleFnMod()) {
        if ((current[1] ^ processed[1]) & MOD_FN) {
            modFn = (current[1] & MOD_FN);
            if (modFn) {
                dualFn = modFn;
            } else if (dualFn && xmit == XMIT_NORMAL && !report[2]) {
                uint8_t key = (dualFn & MOD_RIGHTFN) ? KEY_LANG1 : KEY_LANG2;
                key = toggleKanaMode(key, current[0], 1);
                report[2] = key;
                memmove(processed, current, 8);
                processed[1] |= dualFn;
                dualFn = 0;
                return xmit;
            }
        }
        if (dualFn && (xmit != XMIT_NORMAL || report[2])) {
            dualFn = 0;
        }
    }
#endif

    if (xmit == XMIT_NORMAL || xmit == XMIT_IN_ORDER || xmit == XMIT_MACRO)
        memmove(processed, current, 8);

    return xmit;
}