#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/console.h>
#include <linux/notifier.h>
#include <linux/selection.h>
#include <linux/vt_kern.h>
#include <linux/consolemap.h>
#include <linux/keyboard.h>
#include <linux/kbd_kern.h>
#include <linux/input.h>
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
static bool sound;
module_param(sound, bool, 0);
MODULE_PARM_DESC(…) …;
static void beep(unsigned int freq)
{ … }
#define WIDTH …
#define BRAILLE_KEY …
static u16 console_buf[WIDTH];
static int console_cursor;
static int vc_x, vc_y, lastvc_x, lastvc_y;
static int console_show = …;
static int console_newline = …;
static int lastVC = …;
static struct console *braille_co;
static void braille_write(u16 *buf)
{ … }
static void vc_follow_cursor(struct vc_data *vc)
{ … }
static void vc_maybe_cursor_moved(struct vc_data *vc)
{ … }
static void vc_refresh(struct vc_data *vc)
{ … }
static int keyboard_notifier_call(struct notifier_block *blk,
unsigned long code, void *_param)
{ … }
static struct notifier_block keyboard_notifier_block = …;
static int vt_notifier_call(struct notifier_block *blk,
unsigned long code, void *_param)
{ … }
static struct notifier_block vt_notifier_block = …;
int braille_register_console(struct console *console, int index,
char *console_options, char *braille_options)
{ … }
int braille_unregister_console(struct console *console)
{ … }