*** linux-c750_org/drivers/char/keyboard.c	2002-12-18 19:27:58.000000000 +0900
--- linux-c750_patch_work/drivers/char/keyboard.c	2003-08-08 22:58:53.000000000 +0900
***************
*** 117,122 ****
--- 117,124 ----
  static struct tty_struct **ttytab;
  static struct kbd_struct * kbd = kbd_table;
  static struct tty_struct * tty;
+ static int scancode2;
+ int pressure_alt;
  
  static void kbd_processkeycode(unsigned char scancode, char up_flag, int autorepeat);
  void compute_shiftstate(void);
***************
*** 179,184 ****
--- 181,188 ----
  
  static struct pm_dev *pm_kbd;
  
+ 
+ 
  /*
   * Many other routines do put_queue, but I think either
   * they produce ASCII, or they produce some user-assigned
***************
*** 224,229 ****
--- 228,276 ----
  
  void handle_scancode(unsigned char scancode, int down)
  {
+ 	/* printk("scancode = %x down = %x \n",scancode,down); */
+ 	/* SL-C700 side power 0x6d  */ 
+ 	if ( ( scancode == 0x6d ) && ( down == 0x01 ) ){ 
+ 
+ 		printk("power button\n");
+ 		slc700_key_suspend();
+ 
+ 	/* SL-C700 home key 0x28 menu key 0x1d */
+ 	} else if ( ( scancode == 0x1d ) && ( scancode2 == 0x28 ) ){
+ 
+ 		printk("Change Freq\n");
+ 		slc700_key_changefreq();
+ 
+ 	/* SL-C700 Address down 0x59  */ 
+ 	} else if ( ( scancode == 0x59 ) && ( down == 0x01 ) ){
+ 
+ 		pressure_alt=0x01;
+ 
+ 	/* SL-C700 Address up 0xd9  */ 
+ 	} else if ( ( scancode == 0xd9 ) && ( down == 0x00 ) ){
+ 
+ 		pressure_alt=0x00;
+ 
+ 	/* SL-C700 Home down 0x28  */ 
+ 	} else if ( ( scancode == 0x28 ) && ( down == 0x01 ) ){
+ 
+ 		pressure_alt=0x02;
+ 
+ 	/* SL-C700 Home up 0xa8  */ 
+ 	} else if ( ( scancode == 0xa8 ) && ( down == 0x00 ) ){
+ 
+ 		pressure_alt=0x00;
+ 
+ 	} else {
+ 
+ 		scancode2 = scancode;
+ 		handle_scancode_main ( scancode, down );
+ 
+ 	}
+ }
+ 
+ void handle_scancode_main(unsigned char scancode, int down)
+ {
  	unsigned char keycode;
  	char up_flag = down ? 0 : 0200;
  	char raw_mode;
