|
Lines 31-36
Link Here
|
| 31 |
#define KT_LETTER KT_LATIN |
31 |
#define KT_LETTER KT_LATIN |
| 32 |
#endif |
32 |
#endif |
| 33 |
|
33 |
|
|
|
34 |
#ifndef KDGKBDIACRUC |
| 35 |
struct kbdiacruc { |
| 36 |
unsigned char diacr, base; |
| 37 |
unsigned int result; |
| 38 |
}; |
| 39 |
struct kbdiacrsuc { |
| 40 |
unsigned int kb_cnt; |
| 41 |
struct kbdiacruc kbdiacruc[256]; |
| 42 |
}; |
| 43 |
#define KDGKBDIACRUC 0x4BFA |
| 44 |
#define KDSKBDIACRUC 0x4BFB |
| 45 |
#endif |
| 46 |
|
| 34 |
#undef NR_KEYS |
47 |
#undef NR_KEYS |
| 35 |
#define NR_KEYS 256 |
48 |
#define NR_KEYS 256 |
| 36 |
|
49 |
|
|
Lines 43-49
Link Here
|
| 43 |
/* the kernel structures we want to set or print */ |
56 |
/* the kernel structures we want to set or print */ |
| 44 |
u_short *key_map[MAX_NR_KEYMAPS]; |
57 |
u_short *key_map[MAX_NR_KEYMAPS]; |
| 45 |
char *func_table[MAX_NR_FUNC]; |
58 |
char *func_table[MAX_NR_FUNC]; |
| 46 |
struct kbdiacr accent_table[MAX_DIACR]; |
59 |
struct kbdiacruc accent_table[MAX_DIACR]; |
| 47 |
unsigned int accent_table_size = 0; |
60 |
unsigned int accent_table_size = 0; |
| 48 |
|
61 |
|
| 49 |
char key_is_constant[NR_KEYS]; |
62 |
char key_is_constant[NR_KEYS]; |
|
Lines 748-754
Link Here
|
| 748 |
|
761 |
|
| 749 |
static void |
762 |
static void |
| 750 |
compose(int diacr, int base, int res) { |
763 |
compose(int diacr, int base, int res) { |
| 751 |
struct kbdiacr *p; |
764 |
struct kbdiacruc *p; |
| 752 |
if (accent_table_size == MAX_DIACR) { |
765 |
if (accent_table_size == MAX_DIACR) { |
| 753 |
fprintf(stderr, _("compose table overflow\n")); |
766 |
fprintf(stderr, _("compose table overflow\n")); |
| 754 |
exit(1); |
767 |
exit(1); |
|
Lines 907-926
Link Here
|
| 907 |
|
920 |
|
| 908 |
static int |
921 |
static int |
| 909 |
defdiacs(int fd){ |
922 |
defdiacs(int fd){ |
| 910 |
struct kbdiacrs kd; |
923 |
struct kbdiacrs kd; |
|
|
924 |
struct kbdiacrsuc kduc; |
| 911 |
int i; |
925 |
int i; |
| 912 |
|
926 |
|
| 913 |
kd.kb_cnt = accent_table_size; |
927 |
kd.kb_cnt = accent_table_size; |
|
|
928 |
kduc.kb_cnt = accent_table_size; |
| 914 |
if (kd.kb_cnt > MAX_DIACR) { |
929 |
if (kd.kb_cnt > MAX_DIACR) { |
| 915 |
kd.kb_cnt = MAX_DIACR; |
930 |
kd.kb_cnt = MAX_DIACR; |
|
|
931 |
kduc.kb_cnt = MAX_DIACR; |
| 916 |
fprintf(stderr, _("too many compose definitions\n")); |
932 |
fprintf(stderr, _("too many compose definitions\n")); |
| 917 |
} |
933 |
} |
| 918 |
for (i = 0; i < kd.kb_cnt; i++) |
|
|
| 919 |
kd.kbdiacr[i] = accent_table[i]; |
| 920 |
|
934 |
|
| 921 |
if(ioctl(fd, KDSKBDIACR, (unsigned long) &kd)) { |
935 |
for (i = 0; i < kd.kb_cnt; i++) { |
| 922 |
perror("KDSKBDIACR"); |
936 |
kduc.kbdiacruc[i] = accent_table[i]; |
| 923 |
exit(1); |
937 |
kd.kbdiacr[i].diacr = accent_table[i].diacr; |
|
|
938 |
kd.kbdiacr[i].base = accent_table[i].base; |
| 939 |
kd.kbdiacr[i].result = accent_table[i].result; |
| 940 |
} |
| 941 |
|
| 942 |
if(ioctl(fd, KDSKBDIACRUC, (unsigned long) &kduc)) { |
| 943 |
if(ioctl(fd, KDSKBDIACR, (unsigned long) &kd)) { |
| 944 |
perror("KDSKBDIACR"); |
| 945 |
exit(1); |
| 946 |
} |
| 924 |
} |
947 |
} |
| 925 |
return kd.kb_cnt; |
948 |
return kd.kb_cnt; |
| 926 |
} |
949 |
} |
|
Lines 1204-1210
Link Here
|
| 1204 |
printf("\t0,\n"); |
1227 |
printf("\t0,\n"); |
| 1205 |
printf("};\n"); |
1228 |
printf("};\n"); |
| 1206 |
|
1229 |
|
| 1207 |
printf("\nstruct kbdiacr accent_table[MAX_DIACR] = {\n"); |
1230 |
printf("\nstruct kbdiacruc accent_table[MAX_DIACR] = {\n"); |
| 1208 |
for (i = 0; i < accent_table_size; i++) { |
1231 |
for (i = 0; i < accent_table_size; i++) { |
| 1209 |
printf("\t{"); |
1232 |
printf("\t{"); |
| 1210 |
outchar(accent_table[i].diacr, 1); |
1233 |
outchar(accent_table[i].diacr, 1); |