Rev 4348 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 4348 | Rev 4691 | ||
|---|---|---|---|
| Line 25... | Line 25... | ||
| 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
| 26 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 27 | */ |
27 | */ |
| 28 | 28 | ||
| 29 | /** @addtogroup kbd |
29 | /** @addtogroup kbd |
| 30 | * @brief US QWERTY leyout. |
30 | * @brief Czech QWERTZ layout. |
| 31 | * @{ |
31 | * @{ |
| 32 | */ |
32 | */ |
| 33 | 33 | ||
| 34 | #include <kbd.h> |
34 | #include <kbd.h> |
| 35 | #include <kbd/kbd.h> |
35 | #include <io/console.h> |
| 36 | #include <kbd/keycode.h> |
36 | #include <io/keycode.h> |
| 37 | #include <bool.h> |
37 | #include <bool.h> |
| 38 | #include <layout.h> |
38 | #include <layout.h> |
| 39 | 39 | ||
| 40 | static void layout_reset(void); |
40 | static void layout_reset(void); |
| 41 | static wchar_t layout_parse_ev(kbd_event_t *ev); |
41 | static wchar_t layout_parse_ev(console_event_t *ev); |
| 42 | 42 | ||
| 43 | enum m_state { |
43 | enum m_state { |
| 44 | ms_start, |
44 | ms_start, |
| 45 | ms_hacek, |
45 | ms_hacek, |
| 46 | ms_carka |
46 | ms_carka |
| 47 | }; |
47 | }; |
| 48 | 48 | ||
| 49 | static enum m_state mstate; |
49 | static enum m_state mstate; |
| 50 | 50 | ||
| 51 | layout_op_t cz_op = { |
51 | layout_op_t cz_op = { |
| Line 270... | Line 270... | ||
| 270 | if (key >= map_length) |
270 | if (key >= map_length) |
| 271 | return 0; |
271 | return 0; |
| 272 | return map[key]; |
272 | return map[key]; |
| 273 | } |
273 | } |
| 274 | 274 | ||
| 275 | static wchar_t parse_ms_hacek(kbd_event_t *ev) |
275 | static wchar_t parse_ms_hacek(console_event_t *ev) |
| 276 | { |
276 | { |
| 277 | wchar_t c; |
277 | wchar_t c; |
| 278 | 278 | ||
| 279 | mstate = ms_start; |
279 | mstate = ms_start; |
| 280 | 280 | ||
| Line 288... | Line 288... | ||
| 288 | c = translate(ev->key, map_hacek_lcase, sizeof(map_hacek_lcase) / sizeof(wchar_t)); |
288 | c = translate(ev->key, map_hacek_lcase, sizeof(map_hacek_lcase) / sizeof(wchar_t)); |
| 289 | 289 | ||
| 290 | return c; |
290 | return c; |
| 291 | } |
291 | } |
| 292 | 292 | ||
| 293 | static wchar_t parse_ms_carka(kbd_event_t *ev) |
293 | static wchar_t parse_ms_carka(console_event_t *ev) |
| 294 | { |
294 | { |
| 295 | wchar_t c; |
295 | wchar_t c; |
| 296 | 296 | ||
| 297 | mstate = ms_start; |
297 | mstate = ms_start; |
| 298 | 298 | ||
| Line 306... | Line 306... | ||
| 306 | c = translate(ev->key, map_carka_lcase, sizeof(map_carka_lcase) / sizeof(wchar_t)); |
306 | c = translate(ev->key, map_carka_lcase, sizeof(map_carka_lcase) / sizeof(wchar_t)); |
| 307 | 307 | ||
| 308 | return c; |
308 | return c; |
| 309 | } |
309 | } |
| 310 | 310 | ||
| 311 | static wchar_t parse_ms_start(kbd_event_t *ev) |
311 | static wchar_t parse_ms_start(console_event_t *ev) |
| 312 | { |
312 | { |
| 313 | wchar_t c; |
313 | wchar_t c; |
| 314 | 314 | ||
| 315 | /* Produce no characters when Ctrl or Alt is pressed. */ |
315 | /* Produce no characters when Ctrl or Alt is pressed. */ |
| 316 | if ((ev->mods & (KM_CTRL | KM_ALT)) != 0) |
316 | if ((ev->mods & (KM_CTRL | KM_ALT)) != 0) |
| Line 381... | Line 381... | ||
| 381 | static void layout_reset(void) |
381 | static void layout_reset(void) |
| 382 | { |
382 | { |
| 383 | mstate = ms_start; |
383 | mstate = ms_start; |
| 384 | } |
384 | } |
| 385 | 385 | ||
| 386 | static wchar_t layout_parse_ev(kbd_event_t *ev) |
386 | static wchar_t layout_parse_ev(console_event_t *ev) |
| 387 | { |
387 | { |
| 388 | if (ev->type != KE_PRESS) |
388 | if (ev->type != KEY_PRESS) |
| 389 | return '\0'; |
389 | return 0; |
| 390 | 390 | ||
| 391 | if (key_is_mod(ev->key)) |
391 | if (key_is_mod(ev->key)) |
| 392 | return '\0'; |
392 | return 0; |
| 393 | 393 | ||
| 394 | switch (mstate) { |
394 | switch (mstate) { |
| - | 395 | case ms_start: |
|
| 395 | case ms_start: return parse_ms_start(ev); |
396 | return parse_ms_start(ev); |
| - | 397 | case ms_hacek: |
|
| 396 | case ms_hacek: return parse_ms_hacek(ev); |
398 | return parse_ms_hacek(ev); |
| - | 399 | case ms_carka: |
|
| 397 | case ms_carka: return parse_ms_carka(ev); |
400 | return parse_ms_carka(ev); |
| 398 | } |
401 | } |
| - | 402 | ||
| - | 403 | return 0; |
|
| 399 | } |
404 | } |
| 400 | 405 | ||
| 401 | /** |
406 | /** |
| 402 | * @} |
407 | * @} |
| 403 | */ |
408 | */ |