/** * 스캔 코드를 내부적으로 사용하는 키 데이터로 바꾼 후 키 큐에 삽입 */ BOOL kConvertScanCodeAndPutQueue( BYTE bScanCode ) { KEYDATA stData; BOOL bResult = FALSE; BOOL bPreviousInterrupt; // 스캔 코드를 키 데이터에 삽입 stData.bScanCode = bScanCode; // 스캔 코드를 ASCII 코드와 키 상태로 변환하여 키 데이터에 삽입 if( kConvertScanCodeToASCIICode( bScanCode, &( stData.bASCIICode ), &( stData.bFlags ) ) == TRUE ) { // 인터럽트 불가 bPreviousInterrupt = kSetInterruptFlag( FALSE ); // 키 큐에 삽입 bResult = kPutQueue( &gs_stKeyQueue, &stData ); // 이전 인터럽트 플래그 복원 kSetInterruptFlag( bPreviousInterrupt ); } return bResult; }
/** * 스캔 코드를 내부적으로 사용하는 키 데이터로 바꾼 후 키 큐에 삽입 */ BOOL kConvertScanCodeAndPutQueue( BYTE bScanCode ) { KEYDATA stData; BOOL bResult = FALSE; BOOL bPreviousInterrupt; // 스캔 코드를 키 데이터에 삽입 stData.bScanCode = bScanCode; // 스캔 코드를 ASCII 코드와 키 상태로 변환하여 키 데이터에 삽입 if( kConvertScanCodeToASCIICode( bScanCode, &( stData.bASCIICode ), &( stData.bFlags ) ) == TRUE ) { // 임계 영역 시작 bPreviousInterrupt = kLockForSystemData(); // 키 큐에 삽입 bResult = kPutQueue( &gs_stKeyQueue, &stData ); // 임계 영역 끝 kUnlockForSystemData( bPreviousInterrupt ); } return bResult; }
/// Translate Scan Code to ASCII Code and push it bool kKeyboard::kConvertScanCodeAndPushQueue(BYTE bScanCode) { KEYDATA stData; bool bResult = false; bool bPreviousInterrupt; // Insert Scan Code to the key data structure stData.bScanCode = bScanCode; // Translate Scan Code to ASCII Code, // and insert it to the key data structure if (kConvertScanCodeToASCIICode(bScanCode, &(stData.bASCIICode), &(stData.bFlags)) == true) { // Disable interrupt bPreviousInterrupt = g_pclIH->kSetInterruptFlag(false); // Push the key data bResult = clKeyQueue.kPushQueue(&stData); // Restore previous interrupt flag g_pclIH->kSetInterruptFlag(bPreviousInterrupt); } return bResult; }
BOOL kConvertScanCodeAndPutQueue( BYTE bScanCode ) { KEYDATA stData; BOOL bResult; BOOL bPreviousFlag; stData.bScanCode = bScanCode; if( kConvertScanCodeToASCIICode( bScanCode, &( stData.bASCIICode ), &( stData.bFlags ) ) ) { bPreviousFlag = kLockForSystemData(); bResult = kPutQueue( &gs_stKeyQueue, &stData ); kUnlockForSystemData( bPreviousFlag ); } return bResult; }