diff options
| author | Miguel <m.i@gmx.at> | 2018-09-18 03:03:28 +0200 |
|---|---|---|
| committer | Miguel <m.i@gmx.at> | 2018-09-18 03:03:28 +0200 |
| commit | 2d91384197847a7e8fe2c3f548918a8277d3086d (patch) | |
| tree | 7c93404e290a0ffbdaf9a8a94766d7bd0fd6e4f2 /driver/keyboard.c | |
| parent | 06e6e427c76bdb88a7f72dd04411d95a4bda3270 (diff) | |
sysfs, errno, improve foolshell, etc
Diffstat (limited to 'driver/keyboard.c')
| -rw-r--r-- | driver/keyboard.c | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/driver/keyboard.c b/driver/keyboard.c index d276f51..61b8e5f 100644 --- a/driver/keyboard.c +++ b/driver/keyboard.c @@ -11,10 +11,10 @@ static bool shift_r=false; static bool capslock=false; static uint32_t kb_stream; +static char num_syms[]={')','!','@','#','$','%','^','&','*','('}; static void put(uint8_t c) { - klog("%c",c); syscall_write(kb_stream,(char *)&c,1); } @@ -25,6 +25,7 @@ void keyboard_init(uint32_t s) void keyboard_handle(uint8_t in) { + // klog("kb_in 0x%x",in); uint8_t make_alpha[]={ 0x1e, // A 0x30, // B @@ -143,6 +144,7 @@ void keyboard_handle(uint8_t in) if(break_slash==in) { ascii='/'; + if(shift_l||shift_r||capslock) ascii='?'; match=true; } else if(break_key_space==in) @@ -153,31 +155,43 @@ void keyboard_handle(uint8_t in) else if(in==0xB4) { ascii='.'; + if(shift_l||shift_r||capslock) ascii='<'; match=true; } else if(in==0xB3) { ascii=','; + if(shift_l||shift_r||capslock) ascii='>'; match=true; } else if(in==0x8D) { - ascii='+'; + ascii='='; + if(shift_l||shift_r||capslock) ascii='+'; match=true; } else if(in==0x8C) { ascii='-'; + if(shift_l||shift_r||capslock) ascii='_'; match=true; } else if(in==0x9A) { ascii='['; + if(shift_l||shift_r||capslock) ascii='{'; match=true; } else if(in==0x9B) { ascii=']'; + if(shift_l||shift_r||capslock) ascii='}'; + match=true; + } + else if(in==0xab) + { + ascii='\\'; + if(shift_l||shift_r||capslock) ascii='|'; match=true; } else if(break_key_backspace==in) @@ -198,7 +212,7 @@ void keyboard_handle(uint8_t in) } else if(break_key_tab==in) { - ascii=0x09; + ascii='\t'; match=true; } @@ -223,6 +237,10 @@ void keyboard_handle(uint8_t in) if(break_num[i]==in) { ascii=('0'+i); + if(shift_l||shift_r||capslock) // capslock makes trouble :( + { + ascii=num_syms[i]; + } match=true; break; } |
