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