Lines Matching defs:kbd
77 struct kbd_data *kbd;
80 kbd = kzalloc(sizeof(struct kbd_data), GFP_KERNEL);
81 if (!kbd)
83 kbd->key_maps = kzalloc(sizeof(ebc_key_maps), GFP_KERNEL);
84 if (!kbd->key_maps)
88 kbd->key_maps[i] = kmemdup(ebc_key_maps[i],
91 if (!kbd->key_maps[i])
95 kbd->func_table = kzalloc(sizeof(ebc_func_table), GFP_KERNEL);
96 if (!kbd->func_table)
100 kbd->func_table[i] = kstrdup(ebc_func_table[i],
102 if (!kbd->func_table[i])
106 kbd->fn_handler =
108 if (!kbd->fn_handler)
110 kbd->accent_table = kmemdup(ebc_accent_table,
113 if (!kbd->accent_table)
115 kbd->accent_table_size = ebc_accent_table_size;
116 return kbd;
119 kfree(kbd->fn_handler);
122 kfree(kbd->func_table[i]);
123 kfree(kbd->func_table);
126 kfree(kbd->key_maps[i]);
127 kfree(kbd->key_maps);
129 kfree(kbd);
135 kbd_free(struct kbd_data *kbd)
139 kfree(kbd->accent_table);
140 kfree(kbd->fn_handler);
142 kfree(kbd->func_table[i]);
143 kfree(kbd->func_table);
145 kfree(kbd->key_maps[i]);
146 kfree(kbd->key_maps);
147 kfree(kbd);
154 kbd_ascebc(struct kbd_data *kbd, unsigned char *ascebc)
161 keymap = kbd->key_maps[i];
181 kbd_ebcasc(struct kbd_data *kbd, unsigned char *ebcasc)
188 keymap = kbd->key_maps[i];
212 handle_diacr(struct kbd_data *kbd, unsigned int ch)
216 d = kbd->diacr;
217 kbd->diacr = 0;
219 for (i = 0; i < kbd->accent_table_size; i++) {
220 if (kbd->accent_table[i].diacr == d &&
221 kbd->accent_table[i].base == ch)
222 return kbd->accent_table[i].result;
228 kbd_put_queue(kbd->port, d);
236 k_dead(struct kbd_data *kbd, unsigned char value)
239 kbd->diacr = (kbd->diacr ? handle_diacr(kbd, value) : value);
246 k_self(struct kbd_data *kbd, unsigned char value)
248 if (kbd->diacr)
249 value = handle_diacr(kbd, value);
250 kbd_put_queue(kbd->port, value);
257 k_ignore(struct kbd_data *kbd, unsigned char value)
265 k_fn(struct kbd_data *kbd, unsigned char value)
267 if (kbd->func_table[value])
268 kbd_puts_queue(kbd->port, kbd->func_table[value]);
272 k_spec(struct kbd_data *kbd, unsigned char value)
276 if (kbd->fn_handler[value])
277 kbd->fn_handler[value](kbd);
307 kbd_keycode(struct kbd_data *kbd, unsigned int keycode)
312 if (!kbd)
316 keysym = kbd->key_maps[5][keycode - 384];
318 keysym = kbd->key_maps[4][keycode - 256];
320 keysym = kbd->key_maps[1][keycode - 128];
322 keysym = kbd->key_maps[0][keycode];
331 if (kbd->sysrq) {
332 if (kbd->sysrq == K(KT_LATIN, '-')) {
333 kbd->sysrq = 0;
338 kbd->sysrq = K(KT_LATIN, '-');
342 (*k_handler[KTYP(kbd->sysrq)])(kbd, KVAL(kbd->sysrq));
343 kbd->sysrq = 0;
346 kbd->sysrq = K(type, value);
350 (*k_handler[type])(kbd, value);
352 to_utf8(kbd->port, keysym);
359 do_kdsk_ioctl(struct kbd_data *kbd, struct kbentry __user *user_kbe,
382 key_map = kbd->key_maps[kb_table];
395 key_map = kbd->key_maps[kb_table];
397 kbd->key_maps[kb_table] = NULL;
408 if (!(key_map = kbd->key_maps[kb_table])) {
415 kbd->key_maps[kb_table] = key_map;
435 do_kdgkb_ioctl(struct kbd_data *kbd, struct kbsentry __user *u_kbs,
452 p = kbd->func_table[kb_func];
470 kfree(kbd->func_table[kb_func]);
471 kbd->func_table[kb_func] = p;
477 int kbd_ioctl(struct kbd_data *kbd, unsigned int cmd, unsigned long arg)
490 tty = tty_port_tty_get(kbd->port);
499 return do_kdsk_ioctl(kbd, argp, cmd, perm);
502 return do_kdgkb_ioctl(kbd, argp, cmd, perm);
509 if (put_user(kbd->accent_table_size, &a->kb_cnt))
511 for (i = 0; i < kbd->accent_table_size; i++) {
512 diacr.diacr = kbd->accent_table[i].diacr;
513 diacr.base = kbd->accent_table[i].base;
514 diacr.result = kbd->accent_table[i].result;
524 ct = kbd->accent_table_size;
527 if (copy_to_user(a->kbdiacruc, kbd->accent_table,
544 kbd->accent_table_size = ct;
548 kbd->accent_table[i].diacr = diacr.diacr;
549 kbd->accent_table[i].base = diacr.base;
550 kbd->accent_table[i].result = diacr.result;
564 kbd->accent_table_size = ct;
565 if (copy_from_user(kbd->accent_table, a->kbdiacruc,