keyboard.h revision 1da177e4c3f41524e886b7f1b8a0c1fc7321cac
11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * drivers/s390/char/keyboard.h 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * ebcdic keycode functions for s390 console drivers 41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright (C) 2003 IBM Deutschland Entwicklung GmbH, IBM Corporation 61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com), 71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/tty.h> 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/tty_flip.h> 111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/keyboard.h> 121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NR_FN_HANDLER 20 141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct kbd_data; 161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef void (fn_handler_fn)(struct kbd_data *); 181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FIXME: explain key_maps tricks. 211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct kbd_data { 241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct tty_struct *tty; 251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned short **key_maps; 261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds char **func_table; 271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds fn_handler_fn **fn_handler; 281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct kbdiacr *accent_table; 291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int accent_table_size; 301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char diacr; 311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned short sysrq; 321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct kbd_data *kbd_alloc(void); 351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid kbd_free(struct kbd_data *); 361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid kbd_ascebc(struct kbd_data *, unsigned char *); 371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid kbd_keycode(struct kbd_data *, unsigned int); 391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsint kbd_ioctl(struct kbd_data *, struct file *, unsigned int, unsigned long); 401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Helper Functions. 431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern inline void 451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldskbd_put_queue(struct tty_struct *tty, int ch) 461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds tty_insert_flip_char(tty, ch, 0); 481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds tty_schedule_flip(tty); 491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern inline void 521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldskbd_puts_queue(struct tty_struct *tty, char *cp) 531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds while (*cp) 551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds tty_insert_flip_char(tty, *cp++, 0); 561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds tty_schedule_flip(tty); 571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 58