Пример #1
0
void keyboardHandler(registers_t regs) {
	unsigned char scancode;

	scancode = inb(0x60);

	if (scancode & 0x80) {
		// key release
		unsigned char newSc = scancode - 128;

		if (newSc == 42 || newSc == 54) {
			mK.lShift = 0;
		}
	} else {
		if (kbdus[scancode] == '\b') {
			monitorBackSpace();
			return;
		} else if (kbdus[scancode] == '\n') {
			monitorWrite("\n");
			if (readingInput)
				readingInput = 0;
			return;
		}

		if (mK.lShift)
			monitorPut(upperChar(kbdus[scancode]));
		else
			monitorPut(kbdus[scancode]);

		if (readingInput && (scancode != 42 && scancode != 54)) {
			if (!mK.lShift)
				tempBuffer[bufferCount] = kbdus[scancode];
			else
				tempBuffer[bufferCount] = upperChar(kbdus[scancode]);
			bufferCount++;
		} else if (getchFlag && (scancode != 42 && scancode != 54)) {
			if (!mK.lShift)
				getchChar = kbdus[scancode];
			else
				getchChar = upperChar(kbdus[scancode]);
			getchFlag = 0;
		}
		if (scancode == 42 || scancode == 54) {
			// shift keys
			mK.lShift = 1;
		}
	}
}
Пример #2
0
TString strUpper(const TString& s){
	TString str = "";
	if (s.isEmpty()) return str;

	char* dummy = (char*)malloc(s.length()+1);
	if (!dummy) return str = s;
	for (int i = 0; i <= s.length(); i++){
		dummy[i] = upperChar(s[i]);
		}
	str = (const char*)dummy;
	free(dummy);
	return str;
}