forked from mirrors/qmk_userspace
		
	Inhibit repeating key of PC98
This commit is contained in:
		
					parent
					
						
							
								fea6792f16
							
						
					
				
			
			
				commit
				
					
						504a9f42ff
					
				
			
		
					 1 changed files with 54 additions and 6 deletions
				
			
		| 
						 | 
				
			
			@ -61,11 +61,42 @@ uint8_t matrix_cols(void)
 | 
			
		|||
    return MATRIX_COLS;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void pc98_inhibit_repeat(void)
 | 
			
		||||
{
 | 
			
		||||
    uint8_t code;
 | 
			
		||||
 | 
			
		||||
    while (serial_recv()) ;
 | 
			
		||||
RETRY:
 | 
			
		||||
    PC98_RDY_PORT |= (1<<PC98_RDY_BIT);
 | 
			
		||||
    _delay_ms(500);
 | 
			
		||||
    serial_send(0x9C);
 | 
			
		||||
 | 
			
		||||
    PC98_RDY_PORT &= ~(1<<PC98_RDY_BIT);
 | 
			
		||||
    _delay_ms(100);
 | 
			
		||||
    while (!(code = serial_recv())) ;
 | 
			
		||||
    print("PC98: send 9C: "); print_hex8(code); print("\n");
 | 
			
		||||
    if (code != 0xFA) goto RETRY;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    PC98_RDY_PORT |= (1<<PC98_RDY_BIT);
 | 
			
		||||
    _delay_ms(100);
 | 
			
		||||
    serial_send(0x70);
 | 
			
		||||
 | 
			
		||||
    PC98_RDY_PORT &= ~(1<<PC98_RDY_BIT);
 | 
			
		||||
    _delay_ms(100);
 | 
			
		||||
    //code = serial_recv();
 | 
			
		||||
    while (!(code = serial_recv())) ;
 | 
			
		||||
    print("PC98: send 70: "); print_hex8(code); print("\n");
 | 
			
		||||
    if (code != 0xFA) goto RETRY;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void matrix_init(void)
 | 
			
		||||
{
 | 
			
		||||
    print_enable = true;
 | 
			
		||||
    debug_enable = true;
 | 
			
		||||
    //debug_matrix = true;
 | 
			
		||||
//    debug_enable = true;
 | 
			
		||||
//    debug_matrix = true;
 | 
			
		||||
 | 
			
		||||
    PC98_RST_DDR |= (1<<PC98_RST_BIT);
 | 
			
		||||
    PC98_RDY_DDR |= (1<<PC98_RDY_BIT);
 | 
			
		||||
| 
						 | 
				
			
			@ -74,17 +105,21 @@ void matrix_init(void)
 | 
			
		|||
    PC98_RDY_PORT |= (1<<PC98_RDY_BIT);
 | 
			
		||||
    PC98_RTY_PORT |= (1<<PC98_RTY_BIT);
 | 
			
		||||
 | 
			
		||||
    DDRD |= 1<<7;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    serial_init();
 | 
			
		||||
 | 
			
		||||
    // PC98 reset
 | 
			
		||||
/*
 | 
			
		||||
    PC98_RST_PORT &= ~(1<<PC98_RST_BIT);
 | 
			
		||||
    _delay_us(15);
 | 
			
		||||
    PC98_RST_PORT |= (1<<PC98_RST_BIT);
 | 
			
		||||
    _delay_us(13);
 | 
			
		||||
    PC98_RDY_PORT |= (1<<PC98_RDY_BIT);
 | 
			
		||||
    PC98_RDY_PORT &= ~(1<<PC98_RDY_BIT);
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
    _delay_ms(500);
 | 
			
		||||
    pc98_inhibit_repeat();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // PC98 ready
 | 
			
		||||
    PC98_RDY_PORT &= ~(1<<PC98_RDY_BIT);
 | 
			
		||||
| 
						 | 
				
			
			@ -107,7 +142,20 @@ uint8_t matrix_scan(void)
 | 
			
		|||
    PC98_RDY_PORT &= ~(1<<PC98_RDY_BIT);
 | 
			
		||||
    if (code == -1) return 0;
 | 
			
		||||
 | 
			
		||||
    debug_hex(code); debug(" ");
 | 
			
		||||
if (code == 0x60) {
 | 
			
		||||
    pc98_inhibit_repeat();
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
    PC98_RDY_PORT |= (1<<PC98_RDY_BIT);
 | 
			
		||||
    _delay_ms(100);
 | 
			
		||||
    serial_send(0x96);
 | 
			
		||||
    PC98_RDY_PORT &= ~(1<<PC98_RDY_BIT);
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
    print_hex8(code); print(" ");
 | 
			
		||||
 | 
			
		||||
    if (code&0x80) {
 | 
			
		||||
        // break code
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue